/etc/passwd 是Linux用户身份主名录,含7个冒号分隔字段(如alice:x:1001:1001:Alice Chen:/home/alice:/bin/bash),存储用户名、UID、GID、家目录、Shell等基本信息,密码由x占位并实际存于/etc/shadow;须用useradd/usermod/userdel等命令维护,严禁直接编辑,以防格式错误、UID冲突或系统账户损坏。

/etc/passwd 是 Linux 用户身份的“主名录”,它不存密码,但定义了每个用户能否登录、用什么环境、属于谁、家在哪——管理它,核心不是手动编辑文件,而是用配套命令让系统自动同步更新,避免出错或权限破坏。
别直接改 /etc/passwd,用 useradd/usermod/userdel
该文件由冒号分隔的 7 个字段组成(如 alice:x:1001:1001:Alice Chen:/home/alice:/bin/bash),手动修改极易格式错误、UID 冲突或破坏系统账户(如 root、daemon)。正确做法是:
-
添加用户:用
useradd -m -c "Alice Chen" -s /bin/bash alice,系统自动写入 /etc/passwd 并创建家目录 -
修改属性:比如改默认 shell:
usermod -s /bin/zsh alice;改主目录:usermod -d /home/alice_new -m alice(-m 同时迁移文件) -
删除用户:用
userdel -r alice,-r 表示连家目录和邮件池一并清理,/etc/passwd 中对应行也会被移除
理解关键字段,排查登录或权限问题
当用户无法登录、ls -l 显示 UID 而非用户名、或 cron 报错时,先看 /etc/passwd 对应行是否异常:
- 第 2 字段必须是 x(表示密码在 /etc/shadow),若出现加密串(如 $6$...)说明影子机制被绕过,有安全风险
- 第 3 字段(UID)为 0 是 root;普通用户通常从 1000 起(不同发行版起始值略有差异),避免手动设 UID=0 给非 root 用户
- 第 4 字段(GID)应与 /etc/group 中存在的一致;第 7 字段 Shell 必须真实存在且可执行,
/sbin/nologin或/bin/false表示禁止交互式登录
配合 /etc/shadow 和 /etc/group 一起看
/etc/passwd 单独不能完成认证,它只是“身份索引”。实际登录流程依赖三者协同:
- 用户输入用户名 → 系统查 /etc/passwd 验证存在性、获取 UID/GID/Shell/家目录
- 再查 /etc/shadow 验证密码强度、过期时间、锁定状态(如字段 2 为 !! 表示密码已过期,* 表示禁用)
- 最后通过 /etc/group 和 /etc/gshadow 确认用户所属组及组权限
例如,用 passwd -S alice 可快速查看 shadow 中该用户的密码状态;用 groups alice 查其所属组,比翻文件更安全直观。
权限与备份意识不能少
/etc/passwd 默认权限是 644(所有用户可读),这是设计使然(如 ls 命令需解析 UID→用户名),但绝不能开放写权限:
- 检查权限:
ls -l /etc/passwd,若显示-rw-r--r--正常;若出现w在 group 或 other 位,立即修复:sudo chmod 644 /etc/passwd - 修改前务必备份:
sudo cp /etc/passwd /etc/passwd.bak.$(date +%F) - 误操作后恢复:只要没重启,可用备份覆盖;若已损坏且无备份,可用 live CD 挂载修复,或从另一台同版本系统拷贝基础账户行(如 root、daemon)应急











