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

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

Он работает по большей части, однако один из каталогов не получает желаемого пользователя / группу. Я бегал fpm с -e флаг для проверки Spec File. Все файлы и каталоги помечены под директивой % files, в которой должны быть указаны желаемый пользователь и группа - 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 / share / admin-app / static (и всего, что находится под ним), все они принадлежат root, root.

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

Я прочитал документацию по Spec Files и не вижу никаких других директив, которые могли бы повлиять на каталог / usr / share / admin-app / static.

1 ответ

Вы должны использовать --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.

Другие вопросы по тегам