审计SUID/SGID文件的核心是识别“该不该有”:重点核查非系统路径、非root属主、other可执行的异常项,通过find定位、ls分析权限、分级处置并自动化基线管控。

审计服务器上的 SUID 和 SGID 文件,核心是快速识别、精准评估、及时处置。重点不是“有没有”,而是“该不该有”——尤其要揪出那些非系统路径、非 root 属主、other 可执行的异常项。
快速定位所有带特权位的文件
先用 find 扫出全量候选,再人工或脚本筛风险:
- 查全部 SUID 文件:
find / -xdev -type f -perm -4000 2>/dev/null(-xdev跳过挂载点,避免 NFS 或容器卷干扰) - 查全部 SGID 文件:
find / -xdev -type f -perm -2000 2>/dev/null - 合并查两类:
find / -xdev -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null - 配合
ls -l看权限细节:关注-rwsr-xr-x中的 s(小写表示有效,大写 S 表示无执行权,实际无效)
聚焦高风险模式,不看数量看位置和归属
不是所有 SUID/SGID 都危险,但以下四类必须立刻核查:
- 文件属主是普通用户(比如
alice、dev),却设置了 SUID —— 这等于给非特权账户开了提权后门 - SGID 文件所属组太宽泛(如
users、staff),且该组成员可被随意增删 - 权限中 other 有执行位(如
-rwsr-xr-x),意味着任意用户都能触发它 - 文件路径可疑:出现在
/tmp、/var/tmp、/home/*、NFS 挂载目录等非系统路径
确认必要性并分级处置
发现异常项后,别急着删权限,先问一句:“它为什么需要这个特权?”
- 若无明确业务用途(比如不是
/usr/bin/passwd、/bin/ping这类标准工具),直接清除:chmod u-s,g-s /path/to/file - 若确需保留(如自研运维工具),收紧访问范围:改属主为专用低权限账户,并关闭 other 权限,例如
chmod 4750 /path/to/tool(SUID + 属主/属组可执行,other 无任何权限) - 对关键 SUID 文件启用调用审计:
auditctl -a always,exit -F path=/path/to/binary -F perm=x -k suid_usage,便于回溯谁、何时、为何执行了它
纳入自动化基线,避免反复踩坑
人工查一次容易漏,定期跑才真正起效:
- 把扫描结果与可信白名单比对(如 CIS Benchmark 列出的合法 SUID/SGID 文件列表)
- 用脚本统计风险评分:路径在临时目录 +2 分、属主非 root +1 分、大小超 10MB +1 分,总分 ≥3 触发告警
- 集成进 Ansible 或 cron 任务,每周自动扫描并邮件推送差异报告

















