/etc/passwd是linux用户身份登记簿,不存真实密码但定义登录权限;排查后门需逐字段核查:用户名异常、uid=0非root、密码字段含哈希、shell可登录而主目录为/或/tmp、gecos为空等均为高危特征,须结合/etc/shadow验证一致性。

/etc/passwd 是 Linux 用户身份的“登记簿”,但不是密码本——它本身不存真实密码,却可能被攻击者利用添加异常账户。排查后门账号,关键不是看“有没有密码”,而是看字段组合是否违背常规逻辑。下面直击重点,告诉你怎么拆、怎么看、怎么判。
先确认 passwd 文件结构:7 字段冒号分隔
每行格式固定为: `用户名:密码占位符:UID:GID:GECOS:主目录:登录Shell` ⚠️ 注意:第 7 字段(shell)可能带参数(如 `/bin/bash -i`),解析时不能简单按 `:` 切一刀就完事;第 5 字段(GECOS)含逗号但不破坏字段数,无需额外处理。典型正常行:
alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash
典型可疑行:
xdrk:$1$abc123:0:0::/:/bin/sh
逐字段筛查后门特征
-
用户名字段(第1列):检查是否异常简短(如
adm、sys)、拼写怪异(z0mb13、_svc)、或刻意模仿系统用户(ro0t、binx)。禁止出现:、空格、制表符——这些会导致解析错位,本身就是篡改痕迹。 -
密码占位符(第2列):正常应为
x或*;若出现$1$、$6$、$y$等哈希前缀,说明密码被硬编码进 passwd(绕过 shadow 机制),属高危行为;!!表示账户禁用,但若搭配 UID=0 就需警惕。 -
UID/GID(第3、4列):UID=0 只应属于
root;若其他用户名 UID=0(如backup:x:0:0::/root:/bin/bash),即提权后门;UID 1–999 多为系统服务账户,但若其 shell 不是/usr/sbin/nologin或/bin/false,而设为/bin/bash,就可能被用于登录。 -
GECOS(第5列):空值(
::)常见于恶意账户;若内容明显伪造(如Hacker@2026、test:123:456)或含可疑路径/命令片段,值得标记。 -
主目录(第6列):必须是绝对路径;若为
/、/tmp、/dev/shm或不存在的路径(如/var/empty/xxx),尤其搭配可登录 shell,属典型隐蔽入口。 -
Shell(第7列):合法 shell 应在
/etc/shells中存在;若为/bin/sh、/usr/bin/python3、/usr/lib/git-core/git-shell等非交互式或非常规解释器,需查证用途;/sbin/nologin和/bin/false是安全信号,但若 UID=0 却配了它们,也可能是在掩盖真实意图。
用命令快速筛出高危线索
不依赖肉眼翻页,直接执行这几条:
- 找 UID=0 但不是 root 的账号:
awk -F: '$3 == 0 && $1 != "root" {print}' /etc/passwd - 找 shell 可登录且主目录异常的普通用户:
awk -F: '$7 ~ /^\/bin\/|\/sbin\/bash|\/bin\/sh$/ && ($6 == "/" || $6 ~ "^/tmp|^/dev") {print}' /etc/passwd - 找密码字段含哈希而非 x/* 的行:
grep -E '^[^:]*:(\$[1256ya]|!)\$' /etc/passwd - 找 GECOS 为空且 shell 可用的账户:
awk -F: '$5 == "" && $7 !~ /nologin|false/ {print}' /etc/passwd
关联 /etc/shadow 验证一致性
仅看 passwd 不够——后门常配合 shadow 篡改。检查两文件用户名是否一一对应:comm -3 <br>
输出非空,说明有账户只在 passwd 里(shadow 缺失 → 可能被禁用但未删)或只在 shadow 里(passwd 缺失 → 账户不可见,极可疑)。
再看 shadow 中对应账户的第 2 字段:
若 passwd 中某用户 shell 可登录,但 shadow 中该用户密码字段为 ! 或 !!,说明账户被锁——合理;
若为 * 且 passwd 中 shell 可登录,则无法认证,属配置矛盾,可能掩盖异常。
不复杂但容易忽略











