首页/安全/取证与溯源速查/SUID/SGID 文件排查
Linux 取证135 条

SUID/SGID 文件排查

SUID 位让普通用户以文件属主权限执行程序,新增的 SUID 文件常被用于本地提权,排查时与系统基线清单对比。

取证与溯源速查安全更新于 2026-10-13

SUID 位为什么值得清点

文件设置 SUID 位后,任何用户执行它都会以文件属主的权限运行——如果属主是 root,普通用户执行时就拿到了 root 权限。这个机制在系统里大量用于 passwd、su 等程序,因此攻击者常把新增的 SUID 文件当作本地提权与持久化手段。排查方法不是逐个看文件「像不像恶意」,而是先落地一份基线清单,再用差异比较:新出现的 SUID 文件才是重点。

基本信息

适用平台Linux/Unix;权限位含义由内核实现
扫描命令find 配合 -perm -4000(SUID)、-perm -2000(SGID)
范围控制-xdev 避免跨挂载点,防止扫描网络或外部存储
基线方法在可信主机上生成标准清单,与目标主机比对差异
相关机制文件能力(capabilities)可替代部分 SUID 用途,需一并检查
挂载影响nosuid 挂载点上的 SUID 位不生效,扫描结果要结合挂载选项

典型使用场景

  • 清点主机上全部 SUID/SGID 文件并建立基线
  • 排查本地提权路径:新增的 SUID 可执行文件
  • 对比不同主机的清单,找出被单独植入的文件
  • 结合包管理器校验(如 rpm -V)判断文件是否被替换
  • 检查文件能力配置,找出被授予能力的程序
  • 为清理与加固提供清单:哪些 SUID 位可以回收

清点与比对

清点与比对
# 清点 SUID 文件(-xdev 限定在当前文件系统内)
find / -xdev -perm -4000 -type f 2>/dev/null | sort
# 清点 SGID 文件
find / -xdev -perm -2000 -type f 2>/dev/null | sort | head -20
# 记录属性与哈希,便于与基线比对
find / -xdev -perm -4000 -type f -printf '%TY-%Tm-%Td %TH:%TM %m %u %p\n' 2>/dev/null | sort | head -30
# 检查文件能力(现代替代机制)
getcap -r / 2>/dev/null | head -20
# 用包管理器校验:被替换的文件会被标出来
rpm -Va 2>/dev/null | grep -E '^..5|^M' | head -20
# 与基线清单做差异比较
diff baseline_suid.txt current_suid.txt | head -40

结果判读

观察项含义异常表现
属主以谁的身份执行属主为 root 的新增文件风险最高
路径文件所在目录出现在 /tmp、/dev/shm、用户家目录属高度可疑
时间戳文件创建与修改时间时间落在入侵窗口内
权限位SUID/SGID 组合原本无 SUID 的系统工具被加上该位
文件能力capabilities 配置被授予了不必要的高危能力
挂载选项nosuid 是否生效挂载点带 nosuid 时,该位不生效
先落地一次标准清单作为基线,后续差异比单次结果更有意义。同一发行版不同版本的基线也不同,基线要在相近环境中生成。
扫描范围要明确:跨挂载点扫描会遍历网络文件系统与外部存储,既慢又可能触发大量访问。用 -xdev 限定范围,必要时逐挂载点单独扫描。

易错点

  • 把发行版自带的 SUID 程序(passwd、su 等)逐个当可疑文件,排查方向被带偏
  • 不建基线,只跑一次 find 结果,新增与既有文件无法区分
  • 扫描时未限定 -xdev,遍历网络挂载导致长时间无响应甚至影响业务
  • 只看 SUID 不查文件能力配置,capabilities 形式的提权被漏掉
  • 忽略 nosuid 挂载选项,对不生效的权限位做出错误判断

数据来源与参考

  • man 1 find(GNU findutils)
  • man 1 chmod(权限位说明)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌