我试着在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() '旗帜。 –