是否允许在spec文件中多次使用%defattr
?在Ubuntu 10(rpm版本4.7.1)下,以下定义将导致将777权限应用于 / var / log / testdir2 。
%files
%defattr(-,root,root,-)
%dir /var/log/testdir1
%defattr(777,root,root,-)
%dir /var/log/testdir2
%dir %attr(777,root,root) /var/log/testdir3
升级到Ubuntu 12.04.1(x86_64RPM版本4.9.1.1)后,使用相同的spec文件重新生成rpm并部署到同一目标计算机导致 / var / log / testdir2 具有权限755.我必须更改spec文件以定义%attr
,如上面的 / var / log / testdir3 ,以获得所需的权限。
spec文件的%defattr
定义后面是具有这些权限的文件集,然后是另一个%defattr
定义,后跟具有这些权限的文件集。那是不允许的?或者在权限方面如何处理目录和文件?
答案 0 :(得分:3)
%defattr
通常用于设置文件/目录的默认属性,因此多次使用它对我来说似乎很奇怪。首先让我们看看%defattr
值:%defattr(file perms, user, group, dir perms)
。所以/ var / log / testdir3目录可能在你的tarball中拥有755的权限,因为你没有设置目录权限,它只是继承它们。
尝试这样的事情:
%files
%defattr(755,root,root,777)
%dir /var/log/testdir1
%dir /var/log/testdir2
%dir /var/log/testdir3
使用我上面的内容,它会将目录设置为777,然后将列出的所有文件设置为755,因为它继承了默认值(两者都拥有root.root的所有权)。
我仍然有点困惑为什么你将日志目录的权限设置为777,就像你声明%dir时它只设置了目录权限。你不是想把文件设置成什么东西吗?如果您需要具有不同权限的特定目录,则应使用%attr
属性。