首页/系统/Linux 运维命令速查/sha256sum 校验文件完整性
文件与目录76 条

sha256sum 校验文件完整性

计算与校验 SHA-256 摘要;核对下载包、备份一致性与「文件有没有被改」的标准手段。

Linux 运维命令速查系统更新于 2026-10-13

sha256sum 是什么

sha256sum 属于 GNU coreutils,计算文件的 SHA-256 摘要并输出 64 位十六进制字符串。摘要把任意长度的输入压成固定长度,修改 1 个字节输出就完全不同,因此它能回答两个问题:下载或传输的文件是否完整,以及文件是否被人改动过。要分清能力边界:摘要本身不可逆,也不带任何密钥,它证明的是「与记录的那份一致」,而不是「来源可信」。防篡改需要摘要配合官方签名(gpg)或可信的 HTTPS 渠道一起用。

基本信息

适用平台Linux 全发行版(coreutils 自带);Windows 用 certutil -hashfile,macOS 用 shasum -a 256
命令语法sha256sum [选项] 文件... ;校验模式 sha256sum -c 清单文件
常用选项-c 按清单校验 -b 二进制模式读取 --tag 生成 BSD 风格输出 --ignore-missing 忽略清单里缺失的文件 --quiet 只打印失败项
同族工具md5sum / sha1sum / sha512sum / b2sum(BLAKE2,比 SHA-256 更快)
权限说明无特殊要求,读得到即可;校验系统文件或 root 目录内容用 sudo

典型使用场景

  • 下载包校验:把官方发布的 SHA256SUMS 与实际下载文件比对,确认中间没有损坏或被替换
  • 备份一致性:备份完成后重算摘要,与源目录对照证明数据一致
  • 发布清单:包目录内生成 SHA256SUMS 随包分发,接收方一条命令批量核对
  • 变更核对:发布前记录关键文件摘要,上线后重算对比,确认没被误改
  • 应急取证:可疑文件先固定摘要,为后续分析留下不可否认的凭据

常用示例

常用示例
sha256sum app-v1.2.tar.gz                    # 单个文件
sha256sum *.tar.gz > SHA256SUMS              # 生成清单
sha256sum -c SHA256SUMS                      # 按清单批量核对
echo '<官方摘要>  app.tar.gz' | sha256sum -c -   # 直接比对官方值
sha256sum -c --ignore-missing SHA256SUMS     # 只校验存在的文件
find /srv/pkg -type f -exec sha256sum {} + > all.sha256   # 目录级清单
ssh user@host sha256sum /data/db.tar.gz      # 远端算摘要,避免大文件来回传

校验结果读法

输出含义怎么看
文件名: OK摘要与清单记录一致文件完整,未发现改动
文件名: FAILED摘要不符下载损坏、清单版本不对或被篡改,需重新获取
警告行 no properly formatted...清单格式无法解析常见于手工编辑过清单或用了 BSD --tag 格式而校验端不认
退出码 0 / 10 全部通过,1 存在失败脚本里用 if sha256sum -c SHA256SUMS 判断,别去解析文本
校验清单里的路径是相对当前目录的:先 cd 到文件所在目录再执行 -c,否则会报找不到文件;清单里的路径名不要改成解压后的名字。
摘要只保证「与记录一致」,不保证来源可信。防御性场景必须走官方签名:gpg --verify 校验摘要文件的签名,或从 HTTPS 官方页面交叉核对摘要值,只从下载站复制摘要等于把锁和钥匙放在一起。

易错点

  • 大文件算一遍要完整读盘:机械盘上批量校验前先评估 IO 影响,避免与业务高峰撞车
  • 下载来的 SHA256SUMS 本身也可能被替换,重要场景要与官方公告或 HTTPS 页面上的值交叉核对
  • md5 与 sha1 已有实用碰撞攻击案例,只适合做非对抗性的传输完整性判断,防篡改请用 sha256 以上
  • 文件名含空格或换行时清单格式存在歧义,跨工具解析清单要看清是否带转义前缀

数据来源与参考

  • man 1 sha256sum(GNU coreutils 手册)
  • RFC 6234(SHA 算法)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌