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