我在 shell 中尝试了“umask 77”,然后使用以下命令构建它:
[non-root-user@machine SPECS]$ rpmbuild -bb SPECFILE.spec
但我仍然从输出中得到这个:
+ umask 022
我在 shell 中尝试了“umask 77”,然后使用以下命令构建它:
[non-root-user@machine SPECS]$ rpmbuild -bb SPECFILE.spec
但我仍然从输出中得到这个:
+ umask 022
您无法从 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
我不认为改变 umask 是你应该做的。我假设您对来自 RPM 的文件的权限不满意。为此,您应该在您的部分中使用%attr()
和。%defattr()
%files