Назад | Перейти на главную страницу

Некоторые файлы из RPM имеют фиктивные разрешения

Я создаю RPM с fpm. Одна из целей - установить пользователя и группу установленных файлов, поэтому я использую --rpmuser и --rpmgroup флаги.

Это работает по большей части, однако один из каталогов не получает желаемого пользователя / группу. Я бегал fpm с -e флаг для проверки файла спецификации. Все файлы и каталоги отмечены под % файлов директива, которая должна установить желаемого пользователя и группу - adminuser, admingroup.

%files
%defattr(-,adminuser,admingroup,-)

# Reject config files already listed or parent directories, then prefix files
# with "/", then make sure paths with spaces are quoted. I hate rpm so much.
/etc/admin-services/admin.properties
/usr/share/admin-app/static/admin-console/index.html
/usr/share/admin-app/static/admin-console/console-env.js
/usr/share/admin-app/static/admin-console/css/styles.css
/usr/share/admin-app/webapps/admin-services.war

После установки все файлы принадлежат adminuser, admingroup Кроме в / USR / доля / администратор-приложение / статический каталог (и все, что ниже), все они принадлежат корень, корень.

Я не думаю, что это вина fpm, Spec File выглядит хорошо. Я считаю, что это проблема с rpmbuild под капотом. Есть идеи, что может происходить?

Я прочитал документация по файлам спецификации, и я не вижу других директив, которые могли бы повлиять на / USR / доля / администратор-приложение / статический каталог.

Вы должны использовать --directories вариант. Из fpm --help:

--directories DIRECTORIES     Recursively mark a directory as being owned by the package

Без него право собственности устанавливается только для файлов, каталоги опускаются и будут принадлежать root:root.

Если вы добавите --directories /usr/share/admin-app/static и использовать fpm -e чтобы просмотреть файл спецификации, вы увидите, что он добавляет %dir директива, которая явно устанавливает разрешения, как и следовало ожидать:

%dir %attr(775, adminuser, admingroup) /usr/share/admin-app/static

И другие входы в подкаталоги ниже этого пути, если таковые имеются.

Кроме того, если у вас есть несколько каталогов в корне вашего rpm (как и я), вы должны использовать --directories вариант для каждого.

Это немного сбивает с толку, но давайте поблагодарим rpm за это, а не за ошибку fpm.