2012-09-20 53 views

回答

2

不能將umask從外殼改變因爲在運行%prep腳本之前,rpmbuild將始終將0022設置爲固定的umask。

因此,這取決於你想要達到的目的,你可以嘗試改變的umask在規範文件,在開始%prep部分:

%prep 
umask 077 

但是,如果你只是想設置在RPM文件的文件權限,標準的方法是在%files部分使用%defattr%attr指令:

  • %defattr設置默認屬性S代表文件和文件夾:

    %defattr(<file mode>, <user>, <group>, <dir mode>) 
    

某些屬性可以通過用破折號來替換(因爲文件被安裝了正確設置這些屬性)

  • %attr可以省略設置屬性對於單個文件或文件夾:

    %attr(<mode>, <user>, <group>) file/folder 
    

%defattr如果一個特定的屬性,並不需要指定,您可以用破折號(例如,你可以用它來與%defattr一起,以保持該屬性的默認值)

完整的例子更換:

%files 
# set default attributes for all files and folders: 
%defattr(644, root, root, 755) 
# make a file executable: 
%attr(755, -, -) /usr/bin/myexec 
# set a different owner for a file: 
%attr(-, myuser, -) /var/log/mylog.log 
# set different permissions, owner and group for a file: 
%attr(600, myuser, mygroup) /home/myfile 

有關詳細信息&例子,你可以去看一下:
http://www.rpm.org/max-rpm-snapshot/s1-rpm-specref-files-list-directives.html
http://www.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html

0

我不認爲改變umask是你應該做的。我假設你對RPM中出現的文件的權限感到不滿。爲此,您應在%files部分中使用%attr()%defattr()

+0

是的,我只是把我所有的規格設置爲755.我只是想了解什麼 - ,root,root以及爲什麼我想要打擾它。 – aafc

+0

因爲您可能希望文件被其他用戶擁有。你可以用MySQL的安裝程序創建具有正確掩碼的文件。那麼,你需要用戶擁有的文件「'mysql'」,這樣你就可以使用'%defattr( - ,mysql,mysql)',然後只有那些真正需要root用'attr() '旗幟。 –

相關問題