每次我用 rpm/yum 更新某些软件包时,它们都会重置其文件/目录的某些权限,而这些权限是我出于各种原因故意更改的。有没有办法可以覆盖软件包制作者在 RPM 中指定的权限,并强制其保留我设置的权限/所有者/组?
在 Debian 系统上,我只需使用“dpkg-statoverride”。我找不到任何适用于 RPM 系统的等效程序(我的情况是 CentOS 4 和 5)。
答案1
我不知道您当前问题的答案。但是,我知道当您遇到此类权限问题时,最好问问是否有更好的方法来解决您真正想要做的事情。您要更改哪些包和文件/目录的权限,为什么?
许多软件包使用特定组,甚至可能是他们自己的组,通过将用户添加到该组,您可以获得所需的自由。如果您确实认为软件包应该为非 root 用户提供获取特定内容的方法,请将其报告为软件包的错误,维护人员可能会对其进行更改。或者,如果您觉得权限太宽松,也请将其报告为错误。
另一种可能性是无密码的 sudo,但有限制。您可以将其限制为特定用户和特定命令的运行。您可以为用户需要执行的任何操作编写一个包装器脚本,然后允许特定组中的用户无密码使用此脚本。
基本上,您可以使用很多替代方法,而这些方法不会导致您一直与系统斗争。
答案2
内置?不知道有。我们使用 Puppet 来管理我们的构建,因此很容易拥有依赖于 RPM 和强制执行权限的文件资源。
根据您处理的规模,更轻松的解决方案可能简单到只需一个小脚本,即可 chmod/chown 每次更新后运行的目录/文件列表。