当 yum 有时安装更新时,它会给出一些消息,例如:
warning: /etc/ssh/sshd_config created as /etc/ssh/sshd_config.rpmnew
我的想法是对这些采取行动是明智的,因为出于安全原因,可能偶尔会对配置文件进行一些调整,这些调整很重要;但是,我想知道我是否过于谨慎,这只是一个理论上的问题,在实践中并不是真正的问题。
我想我要问的是任何人都知道过去几年中不合并 .rpmnew 文件会产生一些值得注意的不良影响的任何情况 - 特别是在安全方面,但其他角度,如稳定性或配置的可取性可能是值得一提。
对默认配置的更改很少会对安全性或稳定性产生影响。
.rpmnew
但是,“非常罕见”并不是“从不”,检查所有文件并仔细检查它们是否包含重要更改,然后删除它们是一种很好的系统卫生习惯。作为双重检查,您还应该安排接收有关所有可用更新的安全通知和信息——阅读更改日志和公告将使您对正在修复的问题的性质有一个很好的了解。
我建议在更新后对 *.rpmnew 和 *.rpmsave 文件采取行动。这些文件的创建通常表明以下三件事之一:
您不小心(或没有其他方法)并修改了包管理下的配置文件。通常,如果一个包为配置片段提供了一个目录(例如 /etc/<package>.d/ 就像 PHP 的 /etc/php.d/ 一样),您应该将本地更改放在那里并且不受包提供的配置更改。
打包者不小心更改了规范文件中相应文件条目的定义(例如,他们忘记将特定文件标记为 %config 或将修饰符更改为 %config() 宏。
发生了一些可疑的事情,并且有问题的配置文件被篡改了。
在任何情况下,如果更新生成 *.rpmnew 或 *.rpmsave,最好执行以下操作:
diff -uw old_file new_file
使用(-w 选项将忽略空格数量的变化)在旧文件和新文件之间进行差异;如果没有差异(除了空白)并且您正在调查 *.rpmnew 文件的创建,请使用 *.rpmnew 替换原始文件
mv config_file.rpmnew config_file
。这将确保保留包集元数据(例如时间戳、文件权限和可能的功能)如果存在差异,则根据包提供的文件重新调整您的更改(即,如果您正在使用 *.rpmnew - 以临时名称复制该 *.rpmnew 文件并对其进行调整以匹配原始配置文件中所需的更改;如果您使用 *.rpmsave - 将更改应用到包提供的配置文件)。这将确保进一步的更新会更容易,并且如果引入了您正在使用的新配置文件格式
当您解决“冲突”时,请删除相应的 *.rpmnew 或 *.rpmsave 文件,因为它们未被包管理跟踪。
这将为您提供一个干净而漂亮的系统,并确保您了解配置文件的最新更改。