最可靠方式是直接查/etc/shadow和/etc/passwd:空密码用户(第二字段为空)属高危;UID=0账户除root外均需排查;低UID非系统账户、shadow备份文件、非root进程读取shadow、权限非000均为风险项。

直接查 /etc/shadow 和 /etc/passwd 是最可靠的方式,不需要额外工具,也不依赖日志或服务是否启用。
查空密码用户(高危)
空密码意味着任何人可直接登录,属于严重安全隐患。关键看 /etc/shadow 第二字段是否为空字符串:
-
命令:
sudo awk -F: '$2 == "" {print $1}' /etc/shadow - 输出用户名即表示该账户无密码;若无输出,说明暂无空密码账户
- 注意:
*、!、!!是合法禁用标记,不算空密码;只有字段完全为空才危险
查 UID 为 0 的特权用户(需人工确认)
UID=0 表示等同 root 权限,系统应仅保留 root 一个。多出的 UID=0 账户极可能是入侵痕迹:
-
命令:
awk -F: '$3 == 0 {print $1}' /etc/passwd - 正常情况只输出
root;若出现其他用户名(如admin、test),必须立即调查来源 - 检查创建时间:
sudo ls -lt /var/log/lastlog | head -5或结合lastlog查首次登录时间
查低 UID 非系统账户(隐蔽风险)
攻击者常手工添加 UID
-
命令:
awk -F: '$3 - 该命令过滤常见系统账户名,列出 UID 小于 1000 且不在白名单中的用户
- 重点关注 shell 字段是否为
/bin/bash或/bin/sh;若为/sbin/nologin或/bin/false,风险较低
查 shadow 文件是否被异常访问或残留
权限正确 ≠ 绝对安全。备份文件、临时文件、被打开的句柄都可能泄露密码哈希:
-
搜备份文件:
sudo find /etc -name "shadow*" -not -name "shadow" 2>/dev/null,发现shadow.bak、shadow~等立即删除 -
查正在读取的进程:
sudo lsof +D /etc/ 2>/dev/null | grep -i shadow,若有非 root 进程打开,需溯源 -
检查文件权限:
ls -l /etc/shadow,正确应为---------- 1 root root(即 000 权限)


















