/etc/shadow权限必须为600(-rw-------)或640(-rw-r-----),属主root、属组shadow,且普通用户不可读;空密码、异常UID、错误shell及备份文件均属高危风险,须结合ls、awk、lsof、ausearch等命令全面审计与验证。

直接检查 /etc/shadow 的权限和内容,是 Linux 用户安全审计最基础也最关键的一步。它不依赖任何工具链,几条命令就能暴露高危风险。
确认 shadow 文件权限是否合规
/etc/shadow 必须仅对 root 可读写,普通用户连读都不应被允许。标准权限是 600(-rw-------),少数系统可接受 640(-rw-r-----),但前提是属组为 shadow 且普通用户不在该组中。
- 执行
ls -l /etc/shadow查看当前权限、属主与属组 - 若权限不是 600 或 640,或属主不是
root,立即修复:sudo chown root:root /etc/shadow && sudo chmod 600 /etc/shadow - 启用 SELinux 的系统(如 RHEL/CentOS)还需同步上下文:
sudo restorecon /etc/shadow
筛查空密码与异常账户状态
空密码(/etc/shadow 第二字段为空字符串)等于给攻击者敞开登录大门;* 或 ! 表示禁用,属于正常;!! 多表示密码过期锁定。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 快速找出空密码账户:
sudo awk -F: '$2 == "" {print $1}' /etc/shadow - 检查是否存在 UID 小于 1000 的非系统账户(如手工添加的低UID管理员)
- 验证 shell 字段是否合理:系统账户应为
/usr/sbin/nologin或/bin/false
排查 shadow 文件被意外访问的痕迹
即使权限正确,也要防“合法路径、非法读取”。某些脚本、备份任务或老旧管理工具可能绕过权限逻辑直接读取。
- 检查是否有进程正在打开该文件:
sudo lsof +D /etc/ 2>/dev/null | grep shadow - 查看审计日志(若启用 auditd):
sudo ausearch -m avc -ts today | grep shadow - 搜索残留备份文件(
/etc/shadow~、/etc/shadow.bak、/etc/shadow.swp),发现即删
验证加固效果是否真正生效
改完权限不代表万事大吉,必须用非特权身份实测限制是否起作用。
- 切换到普通用户(如
su - nobody),执行:cat /etc/shadow 2>/dev/null || echo "blocked"
输出blocked才说明限制成功 - 确认关键服务未受影响:尝试
su - username和 SSH 登录,观察是否报错 - 将权限校验加入日常巡检脚本,例如:
[ "$(stat -c "%a %U:%G" /etc/shadow)" = "600 root:root" ]

















