Linux密码哈希升级需确保算法选SHA-512($6$)、配置准确(/etc/login.defs与PAM中均设sha512 rounds=65536)、所有用户重设密码;同时严格管控/etc/shadow权限及配套密码策略。

Linux 密码哈希升级不是改个配置就完事,关键在三点:算法选对、配置写准、密码重设到位。SHA-512(标识 $6$)是当前主流发行版推荐的默认算法,它比 MD5($1$)和 SHA-256($5$)更抗暴力破解,尤其配合高轮次迭代后效果显著。
确认当前用的是什么算法
别猜,直接查:
- 看 /etc/login.defs:执行 grep "^ENCRYPT_METHOD" /etc/login.defs,输出应为 ENCRYPT_METHOD SHA512
- 查 PAM 配置:Ubuntu/Debian 看 /etc/pam.d/common-password,RHEL/CentOS 看 /etc/pam.d/system-auth 或用 authselect current | grep hashing
- 验实际效果:改一次密码后,执行 sudo grep "^$(whoami):" /etc/shadow | cut -d: -f2,结果以 $6$ 开头才算真正生效
正确升级到 SHA-512 的三步操作
不同系统路径不同,但核心动作一致:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- RHEL/CentOS 8+:运行 sudo authselect select sssd with-sha512 --force
- Ubuntu/Debian:修改 /etc/pam.d/common-password 中的 pam_unix.so 行,确保含 sha512 rounds=65536;同时设 sudo sed -i 's/^ENCRYPT_METHOD .*/ENCRYPT_METHOD SHA512/' /etc/login.defs
- 所有系统都必须同步改 /etc/pam.d/passwd:找到 password required pam_unix.so 行,替换为 sha512 shadow nullok rounds=65536
shadow 文件安全不能只靠哈希
再强的哈希也挡不住弱密码或配置疏漏:
- 权限必须严格:/etc/shadow 权限应为 640,属主 root:shadow;定期检查 ls -l /etc/shadow
- 策略要配套:在 /etc/login.defs 中启用 PASS_MIN_LEN 12、PASS_HISTORY 5、PASS_MAX_DAYS 90
- 服务账户别遗漏:像 www-data、postgres 这类不常登录的账号,需手动执行 sudo passwd username 触发哈希更新
验证与排错要点
常见“明明改了却不生效”,往往卡在这几个环节:
- 改完配置没让任何人重设密码 → /etc/shadow 里还是 $1$ 或 $5$
- PAM 多行冲突 → 只保留一条生效的 pam_unix.so sha512 行,其余注释掉
- rounds 参数被忽略 → 没加 rounds=65536,实际只跑 5000 轮,防护力下降超十倍
- 容器或最小化系统缺工具 → 某些 Alpine 或 initrd 环境没有 authselect,得直改 PAM 和 login.defs

















