我試着在shell「的umask 77」,然後構建它:如何在使用rpmbuild構建時更改umask?
[[email protected] SPECS]$ rpmbuild -bb SPECFILE.spec
,但我還是從輸出得到這樣的:
+ umask 022
我試着在shell「的umask 77」,然後構建它:如何在使用rpmbuild構建時更改umask?
[[email protected] SPECS]$ rpmbuild -bb SPECFILE.spec
,但我還是從輸出得到這樣的:
+ umask 022
不能將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
我不認爲改變umask是你應該做的。我假設你對RPM中出現的文件的權限感到不滿。爲此,您應在%files
部分中使用%attr()
和%defattr()
。
是的,我只是把我所有的規格設置爲755.我只是想了解什麼 - ,root,root以及爲什麼我想要打擾它。 – aafc
因爲您可能希望文件被其他用戶擁有。你可以用MySQL的安裝程序創建具有正確掩碼的文件。那麼,你需要用戶擁有的文件「'mysql'」,這樣你就可以使用'%defattr( - ,mysql,mysql)',然後只有那些真正需要root用'attr() '旗幟。 –