rpm -vd 是专用于校验 rpm 包中 %config 标记配置文件是否被修改的轻量命令,仅比对 /var/lib/rpm 中记录的原始状态(大小、内容、时间戳等),输出变更类型(如 s.5....t. c /path),空白即合规,支持批量检查与精准过滤。

rpm -Vd 是一个精准、轻量且生产环境友好的校验手段,专用于快速识别配置文件是否被手动修改,特别适合在安全审计、合规检查或故障回溯时锁定“偏离基线”的关键参数。它不扫描整个包,只聚焦 .config 类文件,响应快、干扰小。
rpm -Vd 的作用机制很明确
这个命令本质是:
-
rpm -V(verify)对已安装包做一致性比对 - 加上
-d选项后,仅校验被 RPM 标记为%config的文件(即 spec 中用%config或%config(noreplace)声明的配置项) - 比对依据来自
/var/lib/rpm/数据库中该包安装时记录的原始状态(大小、权限、MD5、时间戳等)
它跳过了二进制、文档、脚本等非配置类文件,因此执行极快,不会触发 I/O 高峰,也无需停服务。
实际使用时注意三个关键点
-
必须指定包名,不能只写路径:
rpm -Vd nginx✅,rpm -Vd /etc/nginx/nginx.conf❌(后者要用rpm -Vf) -
输出结果直接对应配置文件路径和变更类型:例如
S.5....T. c /etc/nginx/nginx.conf
表示该配置文件的 大小(S)、内容(5) 和 修改时间(T) 已变,
c明确标识它是 config file。 - 空白输出 = 完全合规:没任何打印,说明所有标记为配置的文件都与原始安装状态一致,可立即判定“参数未漂移”。
快速定位偏离项的操作建议
- 批量检查多个核心服务:
for pkg in nginx httpd mariadb-server; do echo "== $pkg =="; rpm -Vd "$pkg"; done
- 结合
grep筛出高风险变更(如内容改动):rpm -Vd httpd | grep '5' # 只看内容被改过的配置
- 对发现异常的文件,用
rpm -qc <pkg></pkg>先确认哪些文件属于该包的配置集,避免遗漏:rpm -qc httpd | head -5
不需要重装、不用查日志、不依赖外部工具——只要 RPM 数据库完好,rpm -Vd 就能秒级给出可信结论。











