如果我在%files中有这一行:
%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar
然后my.jar将myuser作为所有者,但目录/ opt / myapp / lib将由root用户拥有。 我不想写
%attr(0555, myuser, myuser) /opt/myapp/lib/
因为我不希望包含/ opt / myapp / lib /中的所有文件。
如何为/ opt / myapp / lib /目录设置所有者?
感谢。
答案 0 :(得分:20)
我不是RPM专家..但据我所知,您可以使用%dir指令,如下所示:
%files
%dir %attr(0555, myuser, myuser) /opt/myapp/lib
%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar
或者,甚至更简单:
%files
%defattr(555,myuser,myuser,555)
%dir /opt/myapp/lib
/opt/myapp/lib/my.jar
%dir指令允许您添加目录,但不能添加其内容。
答案 1 :(得分:4)
正如其他“超级乐于助人”的人所说...%dir是为了别的东西。解决方案是使用%attr来设置目录的用户和组所有者...因为我已经使用%defattr将目录设置为755我使用单个短划线 - 在%attr行中说...这个它的方式。
%files
#%attr(<mode>, <user>, <group>) file
#%defattr(file perms, user, group, dir perms)
%defattr(644,apache,apache,755)
%attr(-,apache,apache) /var/www/coolapp
%attr(-,apache,apache) /var/www/coolapp/users
%attr(-,apache,apache) /var/www/coolapp/static
/var/www/coolapp/myDB.sqlite
/var/www/coolapp/__init__.py
/var/www/coolapp/settings.py
/var/www/coolapp/urls.py
/var/www/coolapp/wsgi.py