3

我在 shell 中尝试了“umask 77”,然后使用以下命令构建它:

[non-root-user@machine SPECS]$ rpmbuild -bb SPECFILE.spec 

但我仍然从输出中得到这个:

+ umask 022 
4

2 回答 2

3

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

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

%prep
umask 077

但是,如果您只是尝试为 RPM 中的文件设置文件权限,则标准方法是使用%defattr和部分%attr中的指令%files

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

    %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

于 2012-09-20T21:15:29.020 回答
0

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

于 2012-09-21T09:18:17.650 回答