Как установить владельца для каталога в% файлах? - PullRequest
12 голосов
/ 01 апреля 2012

Если у меня есть эта строка в% файлах:

%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 / каталог?

Спасибо.

Ответы [ 2 ]

20 голосов
/ 03 апреля 2012

Я не эксперт по 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 позволяет вам добавлять каталог, но не его содержимое.

4 голосов
/ 06 июня 2013

как говорят другие "супер-полезные" люди ...% dir для чего-то другого. Решение состоит в том, чтобы использовать% attr для установки пользователя и владельца группы в вашем каталоге ... поскольку я уже установил 755 для каталогов, используя% defattr, я использую одну черту - в строке% 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
...