rpm -K --nosignature 是一个用于检查RPM软件包完整性 的命令,它通过校验文件MD5摘要来确认包是否在传输或存储过程中被损坏,但明确跳过数字签名的验证。
一、命令详解
基本语法
bash
rpm -K --nosignature <RPM包文件名>
参数说明
-K(或--checksig):执行软件包完整性检查--nosignature:跳过数字签名验证,仅检查文件MD5校验和
典型输出示例
bash
$ rpm -K --nosignature example.rpm
example.rpm: md5 gpg OK
md5 OK:表示包的MD5校验通过,文件未被篡改或损坏gpg OK:如果有签名验证,这里会显示签名状态(因--nosignature可能会跳过)
二、与其他校验方式的对比
| 检查命令 | 验证内容 | 用途 |
|---|---|---|
rpm -K --nosignature |
仅MD5校验和 | 快速检查文件完整性,跳过签名验证 |
rpm -K(不加参数) |
MD5 + GPG签名 | 完整验证(需要导入签名公钥) |
rpm -K --nodigest |
仅签名 | 跳过MD5验证,只检查签名 |
rpm -K --nofiledigest |
跳过文件MD5 | 仅验证其他元数据 |
三、适用场景
✅ 适合使用 --nosignature 的场景
-
软件包来自不受信任或无法获取公钥的源
- 内部编译的自用包,无需签名验证
- 从第三方下载但无法获得签名公钥
-
仅检查文件传输完整性
- 网络下载后确认文件未损坏
- 移动存储设备复制后校验
-
脚本自动化场景
- 批量检查包完整性时跳过签名验证错误
- CI/CD流水线中验证构建产物
❌ 不推荐使用 --nosignature 的场景
- 生产环境安装官方软件包:应进行完整签名验证,确保包来源可信,防止恶意篡改
- 安全敏感的系统:需要确认软件包来自官方渠道且未被修改
四、常用组合命令
bash
# 1. 仅检查MD5(跳过签名)
rpm -K --nosignature package.rpm
# 2. 完整检查(需要公钥)
rpm -K package.rpm
# 3. 只检查签名,不检查MD5
rpm -K --nodigest package.rpm
# 4. 静默模式,仅在失败时输出
rpm -K --quiet --nosignature package.rpm
# 5. 查询包信息(不校验)
rpm -qpi package.rpm
rpm -qpl package.rpm # 列出包内文件列表
五、注意事项
-
--nosignature会降低安全检查级别:它无法验证包的来源是否可信 -
MD5校验只保证完整性,不保证真实性:文件可能被完整替换但MD5仍然"通过"(如被恶意修改后重新打包)
-
官方软件仓库建议使用
yum或dnf安装:这些工具会自动处理依赖和签名验证 -
检查已安装包的完整性 :
bashrpm -V package-name # 验证已安装的包