真正有用的Linux权限审计报告聚焦四类高风险项:禁用shell却有有效密码的账户、SUID/SGID异常文件、sudoers宽泛授权、90天未登录活跃账户;每项均附明确处置动作、风险等级标签(红/黄/绿)及合规日志溯源,支持自动化执行与闭环验证。
生成一份真正有用的 Linux 用户权限分配审计报告,关键不在堆砌数据,而在让运维和安全人员一眼看清“谁越权了、哪里该改、下一步做什么”。它不是日志汇总,而是风险决策依据。
别用 find 全盘扫描再人工筛,直接锁定最可能出事的点:
awk -F: '$7 ~ /(nologin|false)$/ && $2 != "*" && $2 != "!" {print $1}' /etc/passwd /etc/shadow 2>/dev/null 一键抓出find / -type f ( -perm -4000 -o -perm -2000 ) -exec stat -c "%U %a %n" {} ; 2>/dev/null | grep -v "root 4755|root 2755"
NOPASSWD: ALL、ALL=(ALL) 或未限定路径的规则,用 grep -v "^#" /etc/sudoers | grep -E "(NOPASSWD|ALL=.*ALL|ALL=(.*) /bin/.*|ALL=(.*) /usr/bin/.**|ALL=(.*) /)"
lastlog -b 90 | awk '$3 != "Never" && $1 != "Username" && $2 > 1000 {print $1}'
每条发现不能只写“user_x 权限异常”,要明确告诉人怎么处理:
backup_user 属于 docker 组 → 报告中直接写:执行 gpasswd -d backup_user docker
/usr/local/bin/deploy.sh 是 SUID 且属 dev1 → 写:运行 chmod u-s /usr/local/bin/deploy.sh && chown root:root /usr/local/bin/deploy.sh
testadmin 账户 shell 为 /bin/bash 但密码未锁定 → 写:执行 passwd -l testadmin 并确认 /etc/shadow 第二字段为 !
风险等级用颜色或标签标清:红色(立即执行)、黄色(3个工作日内复核)、绿色(已闭环)。
审计报告只有被持续使用才有价值:
等保或 ISO27001 要求的字段(操作人、时间、目标、动作、结果)必须从源头捕获:
Defaults logfile="/var/log/sudo.log", log_input, log_output, loglinelen=0,确保记录命令、输入、输出、退出码/etc/passwd、/etc/shadow、/etc/sudoers,规则示例:-w /etc/sudoers -p wa -k sudoers_mod