应使用rpm -v校验内核rpm包(如kernel-core、kernel-modules),而非仅检查/boot/vmlinuz;输出中s、5、t等字符分别表示大小、md5、时间异常,sm5等组合出现于vmlinuz文件时表明极可能被恶意替换,需用dnf reinstall恢复并重建initramfs。

要验证已安装内核文件的完整性,本质是验证内核 RPM 包(如 kernel、kernel-core 等)所含文件是否被意外或恶意修改。Linux 中基于 RPM 的发行版(RHEL、CentOS、Fedora、AlmaLinux 等)可直接用 rpm -V 系列命令完成,无需额外工具。
直接校验内核 RPM 包
内核在系统中以独立 RPM 包形式存在(如 kernel-5.14.0-427.13.1.el9_4.x86_64),不是单个文件。因此不能只校验 /boot/vmlinuz-*,而应校验其所属的 RPM 包:
rpm -V kernel
若系统允许多版本共存(默认行为),该命令仅校验最新安装的 kernel 包。如需校验所有已安装内核包,先列出全部内核包:
rpm -q kernel kernel-core kernel-modules 2>/dev/null | sort -V
再对每个包逐一校验,例如:
for pkg in $(rpm -q kernel kernel-core kernel-modules 2>/dev/null | sort -V); do
echo "=== 验证 $pkg ==="
rpm -V "$pkg"
done
⚠️ 注意:
kernel包名在较新 RHEL/Fedora 中可能已被kernel-core和kernel-modules拆分;kernel-devel、kernel-headers属开发包,一般不参与运行时完整性保护,可按需跳过。
重点识别哪些输出需关注
rpm -V kernel 输出形如:
S.5....T. /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64 .M....... /lib/modules/5.14.0-427.13.1.el9_4.x86_64/modules.builtin
含义解析(前8位字符):
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
-
S:文件大小变化 → 可能被替换或截断 -
5:MD5 校验和不一致 → 内容被篡改最明确信号 -
T:修改时间变化 → 常见于手动更新 initramfs,但若伴随S或5则可疑 -
.:该项通过
末尾字母表示文件类型:
-
c:配置文件(如/etc/sysconfig/kernel)→ 允许合法修改 -
d:文档文件(通常可忽略) - 无标记:普通二进制或模块文件 →
S或5出现在此类文件上必须警惕
例如:
SM5...... /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
表示该内核镜像大小、权限、内容全部异常——极可能是被恶意替换,应立即隔离并重装。
快速定位问题文件属于哪个包
若发现异常路径(如 /boot/initramfs-*.img 被标为 S.5...T.),但不确定归属哪个包,用:
rpm -qf /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img
通常返回 kernel-core 或 kernel-modules,再对该包执行 rpm -V。
安全恢复建议
确认非法变更后,推荐操作:
- 使用
dnf reinstall <package></package>或yum reinstall <package></package>恢复原始文件 - 对关键内核文件(如
vmlinuz、initramfs),建议同步重建 initramfs:dracut -f --regenerate-all
- 验证后生成基线快照供后续比对:
rpm -Va > /root/rpm-integrity-baseline-$(date +%F).log
内核文件完整性验证不复杂,但容易忽略——它不是“有没有内核”,而是“这个内核还是不是原来那个”。










