Linux密码存储文件详解:/etc/passwd与/etc/shadow

前言

在Linux系统中,用户密码的安全存储至关重要。传统上,密码信息曾直接存放在/etc/passwd文件中,但因其为世界可读,存在安全隐患。现代Linux采用更安全的/etc/shadow文件来保存加密后的密码。

/etc/passwd 文件

该文件存储所有用户账号的基本信息,每行对应一个用户,字段以冒号分隔。格式如下:

用户名:密码占位符:UID:GID:描述:家目录:登录Shell

其中密码字段通常为x,表示真实密码已移至/etc/shadow。该文件权限为644,所有人可读,但只有root可写。

/etc/shadow 文件

该文件用于保存加密后的密码及密码策略相关信息,只有root用户可读取(权限为600或400)。格式如下:

用户名:加密密码:最后修改日期:最小修改间隔:最大有效期:警告期:不活跃期:过期日期:保留字段
  • 加密密码:通常以$id$salt$hashed格式存储,id表示哈希算法(如1为MD5, 5为SHA-256, 6为SHA-512)。
  • 日期字段:自1970年1月1日起的天数。

安全对比

文件密码存储权限安全等级
/etc/passwd仅占位符644
/etc/shadow加密哈希600

常见操作

  • 查看密码信息sudo cat /etc/shadow | grep username
  • 修改密码passwd username(自动更新shadow)
  • 锁定账户passwd -l username(在shadow密码前加!)

总结

了解/etc/passwd/etc/shadow是Linux系统管理的基础。保持shadow文件的严格权限,并定期检查密码策略,可有效提升系统安全性。