2012-09-20 21 views

回答

2

不能将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

0

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

+0

是的,我只是把我所有的规格设置为755.我只是想了解什么 - ,root,root以及为什么我想要打扰它。 – aafc

+0

因为您可能希望文件被其他用户拥有。你可以用MySQL的安装程序创建具有正确掩码的文件。那么,你需要用户拥有的文件“'mysql'”,这样你就可以使用'%defattr( - ,mysql,mysql)',然后只有那些真正需要root用'attr() '旗帜。 –

相关问题