Linux系统的用户密码存储机制设计兼顾安全性与灵活性,其核心原理和配置要点如下:
传统文件
/etc/passwd
:存储用户基本信息(UID、GID、家目录等),历史版本中密码以x
占位符表示,实际密码已迁移至/etc/shadow
/etc/shadow
:仅root可读,存储加密后的密码及策略信息,格式为:
username:加密密码:最后修改天数:最小天数:最大天数:警告天数:失效天数:保留字段
现代扩展
加密方式标识
shadow文件中密码字段以$id$salt$hash
格式存储,id
表示算法类型:
$1$
:MD5(已淘汰)$2a$
/$2y$
:Blowfish$5$
:SHA-256(推荐)$6$
:SHA-512(最安全)示例解析
user1:$6$s4ltv4lue$F3K...长哈希...Xr0:19000:0:60:7:10::
$6$
)s4ltv4lue
(防止彩虹表攻击)F3K...Xr0
Salt机制
Shadow文件保护
640
(root可读写,shadow组可读):
bash
chmod 640 /etc/shadow
chown root:shadow /etc/shadow
密码策略控制
/etc/login.defs
设置全局策略(密码有效期等)chage
命令修改用户策略:
bash
chage -M 90 -W 7 user1 # 强制90天修改密码,提前7天警告
修改加密算法
编辑/etc/login.defs
或使用authconfig
工具(RHEL系):
authconfig --passalgo=sha512 --update
密码锁定与解锁
bash
passwd -l user1 # 密码前添加"!!"
bash
passwd -u user1
故障排查
/etc/nsswitch.conf
确认账户来源(files/ldap等)pwck
和grpck
验证文件完整性通过理解Linux密码存储机制,管理员可有效提升系统认证安全性。如需深度防御,建议结合SELinux、fail2ban等工具构建多层防护体系。