Permissions 使用rpmbuild构建时如何更改umask?

Permissions 使用rpmbuild构建时如何更改umask?,permissions,rpm,umask,Permissions,Rpm,Umask,我在外壳中尝试了“umask 77”,然后用以下材料制作: [non-root-user@machine SPECS]$ rpmbuild -bb SPECFILE.spec 但我仍然从输出中得到: + umask 022 无法从shell更改umask,因为在运行%prep脚本之前,rpmbuild将始终将固定umask设置为0022 因此,根据您试图实现的目标,您可以在%prep部分的开头尝试更改spec文件中的umask: %prep umask 077 但是,如果您只是试图为R

我在外壳中尝试了“umask 77”,然后用以下材料制作:

[non-root-user@machine SPECS]$ rpmbuild -bb SPECFILE.spec 
但我仍然从输出中得到:

+ umask 022 

无法从shell更改umask,因为在运行
%prep
脚本之前,rpmbuild将始终将固定umask设置为
0022

因此,根据您试图实现的目标,您可以在
%prep
部分的开头尝试更改spec文件中的umask:

%prep
umask 077
但是,如果您只是试图为RPM中的文件设置文件权限,标准方法是在
%files
部分中使用
%defattr
%attr
指令:

%prep
umask 077
  • %defattr
    设置文件和文件夹的默认属性:

    %defattr(<file mode>, <user>, <group>, <dir mode>)
    
%defattr
一样,如果不需要指定特定属性,可以将其替换为破折号(例如,可以将其与
%defattr
一起使用,以保留该属性的默认值)

一个完整的例子:

%文件
#为所有文件和文件夹设置默认属性:
%defattr(644,根,根,755)
#使文件可执行:
%属性(755,--)/usr/bin/myexec
#为文件设置其他所有者:
%attr(-,myuser,-)/var/log/mylog.log
#为文件设置不同的权限、所有者和组:
%attr(600,我的用户,我的组)/home/myfile
有关更多详细信息和示例,请访问:


我认为您不应该更改umask。我假设您对RPM中的文件权限不满意。为此,您应该在
%files
部分中使用
%attr()
%defattr()

是的,我刚刚将所有规格设置为755。我只是想了解-,root,root是做什么的,以及为什么我还要麻烦它。因为你可能想让其他用户拥有这些文件。例如,MySQL的安装程序将使用适当的掩码创建文件。好的,您需要用户“
mysql
”拥有的文件,因此您可以使用
%defattr(-,mysql,mysql)
,然后只使用
%attr()
标记真正需要root用户单独标记的文件。