SUID和SGID使进程以文件所有者或所属组身份运行,仅对二进制有效;需用find定位并排查非系统路径、非root属主、other可执行等高风险项,确认必要性后清除权限或限制访问并审计调用。

理解SetUID与SetGID的实际行为
SetUID(SUID)和SetGID(SGID)是Linux中影响进程执行权限的特殊位,不是普通用户权限控制手段。当一个可执行文件设置了SUID位(如 /usr/bin/passwd),任何用户运行它时,进程将**以该文件所有者的身份**运行;SGID同理,但以文件所属组身份运行。注意:SUID对脚本文件在绝大多数现代Linux发行版中已被内核忽略(出于安全考虑),仅对编译型二进制有效。
快速定位高风险SUID/SGID文件
应重点排查非系统默认路径、非root所有、或权限过宽的SUID/SGID文件。使用以下命令组合审计:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
查找所有SUID文件:
find / -type f -perm -4000 2>/dev/null -
查找所有SGID文件:
find / -type f -perm -2000 2>/dev/null -
排除常见合法项,聚焦异常:结合
ls -l检查所有者、所属组、权限(如-rwsr-xr-x中的 s 表示SUID已设)、文件路径是否合理(如出现在/tmp、/var/tmp、用户家目录下即高度可疑)
识别典型危险模式
以下情况需立即评估并处置:
- 文件属主为普通用户(非 root、bin、daemon 等系统账户)且具有SUID位
- SGID文件所属组为
users、staff或其他宽泛组,且组成员可控 - 文件权限中“other”有执行位(如
-rwsr-xr-x而非-rwsr-x---),导致任意用户均可调用 - 文件位于临时目录、NFS挂载点或可被非特权用户写入的路径(可能被替换为恶意二进制)
安全加固与响应建议
发现风险项后,按优先级处理:
- 确认是否业务必需——若无明确用途,直接清除SUID/SGID位:
chmod u-s,g-s /path/to/file - 若必须保留(如自研运维工具),限制访问范围:修改属主/属组为专用低权限账户,并关闭other执行权限:
chmod 4750 /path/to/file(SUID+属主可执行+属组可执行) - 启用审计日志追踪调用:
auditctl -a always,exit -F path=/path/to/suid_binary -F perm=x -k suid_exec,便于事后溯源 - 将SUID/SGID检查纳入基线扫描流程,例如通过Ansible、CIS Benchmark脚本定期比对白名单

















