一些 RPM 文件有虚假权限

一些 RPM 文件有虚假权限

我正在使用平均流量。其中一个目标是设置已安装文件的用户和组,因此我使用--rpmuser--rpmgroup标志。

它正在发挥作用大部分情况下,但其中一个目录未收到所需的用户/组。我已fpm使用-e标志运行以检查 Spec 文件。所有文件和目录都标记在%文件应设置所需用户和组的指令 -管理员用户,管理员组

%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

安装后,所有文件都属于管理员用户,管理员组 除了在/usr/share/admin-app/static目录(以及其下的所有内容),它们都属于根,根

我认为这不是 fpm 的错,Spec 文件看起来不错。我相信这是 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 的错。

相关内容