如何验证软件包的一个文件,而不是 RPM 本身

如何验证软件包的一个文件,而不是 RPM 本身

例如,我可以用某种方式rpm来验证它/etc/pam.d/system-auth自安装在系统上以来没有发生变化吗?我知道我可以使用整个 RPM 来执行此操作,但我想知道是否可以使用内置rpm校验和功能或类似功能对单个文件或配置文件执行此操作。红帽 Linux 5/6。

答案1

使用:

rpm -Vf /etc/pam.d/system-auth

尽管在本例中,rpm会抱怨该文件不属于任何包,因为它是符号链接。在这种情况下,您需要确保针对该实际文件运行命令,而不是针对它的符号链接:

rpm -Vf /etc/pam.d/system-auth-ac

答案2

我知道很久以前就有人问/回答了这个问题,但我认为这是不正确的(也许行为发生了变化rpm,但我不这么认为)。

rpm -Vf ${FILE}似乎使用指定的文件来识别包(就像这样rpm -qf做),但然后验证整个包,这就是总是rpm -V做的事情。

要仅获取单个文件的详细信息,我认为最简单的解决方案是:

rpm -vf ${FILE} | grep ${FILE}

如果您希望状态代表“此文件自安装以来是否已被修改”,您可以执行以下操作:

FILE=/etc/pam.d/system-auth
if rpm -vf ${FILE} | grep -q ${FILE}
then
    echo "${FILE} has been modified"
fi

相关内容