/etc/passwd每行含7个冒号分隔字段:用户名、密码占位符(通常为x)、uid、gid、gecos(逗号分隔的描述信息)、家目录、登录shell;/etc/shadow共9字段,仅root可读,第2字段为哈希密码,格式不一致会导致登录失败或审计告警。

直接查看 /etc/passwd 文件就能看到系统所有用户的基本结构,它用冒号分隔7个固定字段,每行对应一个用户。理解这7个字段是Linux用户管理的基础,不靠记忆,靠对照和验证。
字段含义逐项说明
以这一行为例:alice:x:1001:1001:Alice Chen,Dev Team,/home/alice:/bin/bash
-
用户名:登录时输入的名称(如
alice),必须唯一 -
密码占位符:几乎总是
x,表示真实密码已移至/etc/shadow,不是空也不是明文 -
UID(用户ID):内核识别用户的数字,
0是 root,1–999通常是系统服务账户,≥1000一般是普通用户 -
GID(主组ID):用户默认所属组的数字ID,对应
/etc/group中的组名 - GECOS 字段:逗号分隔的描述信息,常见为“全名,办公室,电话,其他”,可为空
-
家目录:用户登录后默认进入的路径,root 是
/root,普通用户通常是/home/用户名 -
登录 Shell:用户启动的命令解释器,
/sbin/nologin或/usr/sbin/false表示禁止交互式登录
快速查看与过滤实用命令
不用逐行读,用管道组合命令直击重点:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 只看用户名列表:
cut -d: -f1 /etc/passwd - 查出能真正登录的用户(排除
nologin和false):grep -E '/bin/(bash|zsh|sh)$' /etc/passwd - 列出 UID ≥ 1000 的普通用户:
awk -F: '$3 >= 1000 {print $1,$3,$6,$7}' /etc/passwd - 统计总用户数(即文件行数):
wc -l /etc/passwd | awk '{print $1}'
注意几个关键细节
这些点容易被忽略,但影响判断准确性:
-
/etc/passwd所有用户都可读,但**不能手动编辑**——应使用useradd、usermod等命令维护 - UID 为 0 的不只有 root,某些定制系统可能有多个特权账户,需结合实际确认
- 同一 GID 可能对应多个用户,但每个用户行只写一个 GID(主组),附加组在
/etc/group中定义 - Shell 字段为空或非法路径会导致登录失败,检查时可配合
chsh -l查看系统允许的 shell 列表
辅助验证方法
光看文件不够?可以交叉验证:
- 查某个用户的详细信息:
getent passwd alice(比直接读文件更可靠,支持 LDAP/NIS) - 看该用户属于哪些组:
groups alice或id alice - 确认家目录是否存在且权限合理:
ls -ld /home/alice - 查 GID 对应的组名:
getent group 1001










