Linux系统的账号密码相关信息并非集中存放在单一文件中,而是拆分存储在不同的系统文件里,不同文件承担的存储职责和访问权限有明确区分,这样的设计是为了提升系统的账号安全性。

主要的密码相关存储文件
/etc/passwd 文件
这个文件是Linux系统中最基础的账号信息存储文件,所有用户都可以读取该文件的内容,它主要存储账号的基础属性信息,早期系统曾将加密后的密码也存放在这里,现在为了安全已经将密码部分迁移到其他文件中。
该文件的每一行对应一个账号,各字段用冒号分隔,格式如下:
# 字段含义:用户名:密码占位符:UID:GID:用户描述:家目录:登录Shell root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
第二个字段的x是密码占位符,说明实际的密码已经不存储在这个文件中,如果看到该字段是空或者其他字符,可能是系统版本较老或者存在配置异常。
/etc/shadow 文件
这个文件是专门用来存储加密后的用户密码以及密码相关策略信息的文件,只有root用户拥有读取权限,普通用户无法直接查看该文件内容,这是Linux提升密码安全性的核心设计。
该文件的每一行同样对应一个账号,各字段用冒号分隔,格式如下:
# 字段含义:用户名:加密密码:最后修改时间:最小修改间隔:密码有效期:警告天数:失效宽限天数:账号失效时间:保留字段 root:$6$saltstring$encryptedpassword:19131:0:99999:7::: daemon:*:19131:0:99999:7:::
第二个字段是加密后的密码,如果看到该字段是*或者!,说明该账号被锁定,无法正常登录系统。其中$6$开头的表示使用的是SHA-512加密算法,$1$开头的是MD5加密算法。
/etc/group 文件
这个文件用来存储用户组的基础信息,所有用户都可以读取,主要记录组名、组密码占位符、GID以及属于该组的用户列表。
文件格式如下:
# 字段含义:组名:组密码占位符:GID:组内用户列表 root:x:0: adm:x:4:syslog,user1
组密码相关的实际存储不在该文件中,和账号密码类似,组密码的实际加密信息存放在/etc/gshadow文件中。
/etc/gshadow 文件
这个文件是用户组密码的加密存储文件,只有root用户可以读取,存储组的加密密码以及组管理员相关信息,格式和/etc/shadow类似。
# 字段含义:组名:加密组密码:组管理员:组内用户列表 root::: adm:!::syslog,user1
文件权限说明
这些密码相关文件的权限设置是系统安全的重要保障,可以通过以下命令查看文件权限:
ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow
正常情况下权限输出如下:
| 文件路径 | 权限 | 所属用户 | 所属组 |
|---|---|---|---|
| /etc/passwd | -rw-r--r-- | root | root |
| /etc/shadow | -rw-r----- | root | shadow |
| /etc/group | -rw-r--r-- | root | root |
| /etc/gshadow | -rw-r----- | root | shadow |
常见操作示例
如果需要查看当前系统中所有账号的基础信息,可以直接读取/etc/passwd文件:
cat /etc/passwd
如果需要查看某个账号的密码过期策略,可以用root用户读取/etc/shadow文件后筛选对应账号:
grep "username" /etc/shadow
如果需要修改用户密码,不建议直接编辑这些文件,应该使用passwd命令,系统会自动更新/etc/shadow中的加密密码字段:
# root用户修改指定用户密码 passwd username # 普通用户修改自己的密码 passwd
注意:直接手动编辑这些密码文件很容易导致系统账号异常,除非你明确知道修改的后果,否则不要直接修改文件内容,优先使用系统提供的账号管理命令操作。
Linuxpassword_fileshadow_filepasswd_file修改时间:2026-07-07 00:45:24