Linux中密码存储于/etc/shadow(仅root可读),/etc/passwd仅存占位符x;前者含9个密码策略字段如哈希值、有效期等,后者7字段含UID、Shell等基础信息。

Linux 系统中不直接查看用户密码本身,但可通过 /etc/passwd 和 /etc/shadow 两个关键文件了解密码相关的配置结构和策略字段。真正存密码的是 /etc/shadow,而 /etc/passwd 中只保留占位符(如 x),这是现代 Linux 的安全设计。
/etc/passwd 文件的 7 个字段含义
该文件所有用户都可读,每行代表一个用户,字段用冒号 : 分隔,共 7 个:
-
用户名:登录时输入的名称,如
root或andy,唯一且区分大小写 -
密码占位符:几乎总是
x,表示密码已移至/etc/shadow;若为*或!,通常表示账户被锁定或禁用 -
UID(用户ID):数字标识,
0是 root,1–999多为系统用户,1000+一般为普通用户 -
GID(主组ID):对应
/etc/group中的组编号,决定用户默认所属组 - GECOS 字段:描述性信息,常含真实姓名、办公室、电话等,用逗号分隔,可为空
-
家目录:用户登录后进入的路径,如
/home/andy或/root -
登录 Shell:如
/bin/bash(可交互)、/sbin/nologin或/usr/sbin/nologin(禁止登录)
/etc/shadow 文件的 9 个密码相关字段含义
该文件仅 root 可读,是密码策略的实际载体,每行也以 : 分隔,共 9 个字段:
-
用户名:与
/etc/passwd中一致,用于关联两个文件 -
加密密码:SHA-512 或 yescrypt 等格式的哈希值;若为
*或!,表示无密码或账户锁定 -
密码最后修改日期:从 1970-01-01 起算的天数(如
19824表示 2024-04-15) -
密码最短使用天数:修改后至少要过多少天才能再改(
0表示无限制) -
密码最长使用天数:必须修改前的有效期(如
99999常表示永不过期) -
密码过期前警告天数:到期前多少天开始提示用户(如
7) -
密码过期宽限天数:过期后还能登录几天(
0表示立即锁定) -
账户失效日期:绝对截止日(从 1970-01-01 起算的天数),
空表示不限制 - 保留字段:目前未使用,留作扩展,通常为空
如何快速查看并验证这些字段
不需要记全,日常可结合命令辅助理解:
- 运行
head -n 1 /etc/passwd查看第一行结构,再用cut -d: -f1,2,3,7 /etc/passwd提取常用字段 - 用
sudo head -n 1 /etc/shadow查看 shadow 格式(需 root 权限) - 对某用户查密码状态:
sudo passwd -S username,它会把 shadow 中的字段翻译成易懂说明 - 用
getent passwd username或getent shadow username可统一查询,兼容 LDAP 等外部源
注意权限与安全边界
这两个文件的分工明确:
-
/etc/passwd是“公开目录册”,负责身份映射和基础配置,权限通常是644 -
/etc/shadow是“保险柜”,专管密码哈希和时效策略,权限严格限制为600(仅 root 可读写) - 随意编辑这两个文件极易导致登录失败,建议优先使用
useradd、passwd、chage等专用命令维护











