如果升级软件包,yum 会将文件权限设置为新版本软件包中设置的权限。
我怎样才能阻止它这样做?
我使用 puppet,默认情况下放置 puppet 配置的目录是 755,由 root 拥有。但是我希望 root 以外的用户能够写入该目录,因此我更改了权限。但是当我运行时,yum upgrade puppet
它将权限更改回之前的状态。我希望它保留已存在的目录/文件的权限。
编辑:进行升级然后手动将权限设置回我想要的权限并不是真正的选择,因为其中一个目录是CIFS
只读的安装,所以即使 root 也无法更改这些目录的权限。
答案1
您想要做的是禁用核心 rpm 功能。 rpm 中包含的所有文件都与校验和、它们的权限以及一些附加/可选标志一起存储在包中。没有办法禁用权限的更改,因为基本上您希望能够在触及包中的任何文件时恢复默认权限,或者例如用于验证所有文件、权限和校验和。
您能否添加 的输出
rpm -q --qf '[%{filenames}: %{filemodes:perms}\t%{fileflags}\n]' puppet
并标记包含配置的目录,以及
rpm -qf /directory
包含配置的目录的输出?
另一种方法可能是使用setfacl -m
添加高手对于用户的该目录,不应覆盖该目录。
另一种方法可能是使用 rpm 文件触发器,但这非常复杂,而且它们不是标准的 - 简短的搜索表明 CentOS/RHEL/Fedora 似乎不支持它们。