Некоторые файлы из 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.