直接审计服务器特权文件权限需聚焦高风险目标:先锁定/etc/shadow、/etc/sudoers等核心文件并验证其权限,再用find筛查全局可写、suid、sgid文件,最后通过脚本精准比对预期权限,同时不可忽略/root/.ssh/、/var/log/及启动脚本等隐蔽关键点。

直接审计服务器上所有特权文件权限,关键不是“全盘扫描”,而是聚焦高风险目标、用对方法、快速定位越权项。
先锁定必须检查的核心特权文件
这些文件一旦权限宽松,极易导致提权或信息泄露,优先级最高:
- /etc/shadow:密码哈希存储,必须为 000 或 400(仅 root 可读)
- /etc/sudoers 及 /etc/sudoers.d/ 下全部文件:必须为 440 或 400
- /etc/ssh/sshd_config:SSH 服务配置,建议设为 600
- /etc/crontab 和 /etc/cron.* 目录内配置文件:应为 600(仅 root 写)
- /etc/passwd:通常 644 安全,但若含明文密码(极罕见),需立即改为 600
用 find 快速筛查三类高危权限模式
一条命令对应一类风险,不依赖额外工具:
- 查全局可写文件(如 777、666):
find / -type f -perm /222 2>/dev/null | head -20
(/222匹配任意用户有写位的文件,避免漏掉 666、777、646 等) - 查 SUID 文件(普通用户可提权执行):
find / -type f -perm /4000 2>/dev/null | xargs ls -l 2>/dev/null - 查 SGID 文件(影响组上下文):
find / -type f -perm /2000 2>/dev/null | xargs ls -l 2>/dev/null
用脚本做一次精准比对审计
把预期权限写死,只报差异项,避免误报干扰:
保存为audit-priv.sh,root 运行:
#!/bin/bash
declare -A TARGETS=(
["/etc/shadow"]="000"
["/etc/sudoers"]="440"
["/etc/ssh/sshd_config"]="600"
["/etc/crontab"]="600"
)
for f in "${!TARGETS[@]}"; do
[[ -f "$f" ]] || continue
cur=$(stat -c "%a" "$f" 2>/dev/null)
exp=${TARGETS[$f]}
[[ "$cur" != "$exp" ]] && echo "[ALERT] $f: $cur (expected $exp)"
done
运行后只输出真正违规项,清晰可操作。
别漏掉隐藏但关键的权限点
以下位置常被忽略,却直接影响安全水位:
-
/root/.ssh/ 目录权限不能是 755 或 777,应为 700;私钥文件(如
id_rsa)必须为 600 -
/var/log/ 下敏感日志(如
auth.log、secure)不应被普通用户读取,建议 640 +root:syslog - 任何在
/etc/init.d/、/usr/lib/systemd/system/中的启动脚本,若属主非 root 或含 world-writable,需立即修正











