首页/系统/Linux 运维命令速查/安全巡检:查找 SUID/SGID 文件

安全巡检:查找 SUID/SGID 文件

定期盘点全盘 SUID/SGID 是基础安全动作:find -perm 找出清单,与基线比对;新出现的 SUID 二进制优先审计。

Linux 运维命令速查系统更新于 2026-10-13

盘点 SUID 是最低成本的安全动作

SUID 程序以文件属主的身份运行(passwd、sudo 都属此类),SGID 则继承属组权限。攻击者拿到 root 后常常留一个隐藏的 SUID 后门,因此“定期导出 SUID/SGID 清单并与基线比对”是最省事的入侵检测手段:新出现、且不在发行版默认集合里的 SUID 二进制应当优先审计。

基本信息

适用平台Linux(GNU findutils)
扫描命令find / -xdev -type f -perm -4000(SUID)与 -perm -2000(SGID)
权限要求root(否则大量目录报权限错误,结果不完整)
产出带日期与主机名的清单文件,用于后续比对
交叉验证rpm -V / dpkg -V 判断文件是否被篡改
范围控制-xdev 限制在当前文件系统

典型使用场景

  • 安全基线巡检与合规检查
  • 应急响应时查找后门与异常提权面
  • 系统加固前后对比 SUID 集合的变化
  • 新装机与模板机核对默认 SUID 清单
  • 发行版大版本升级后复核权限面

全盘扫描与比对

全盘扫描与比对
sudo find / -xdev -type f -perm -4000 -ls 2>/dev/null | tee /var/log/suid-audit-$(date +%F).txt
sudo find / -xdev -type f -perm -2000 -ls 2>/dev/null | tee -a /var/log/suid-audit-$(date +%F).txt
# 与昨日基线比对(只对比路径差异)
sudo diff <(awk '{print $11}' /var/log/suid-audit-$(date -d yesterday +%F).txt | sort) \
          <(awk '{print $11}' /var/log/suid-audit-$(date +%F).txt | sort)
# 判断新出现的二进制是否被篡改
rpm -Vf /usr/bin/passwd        # RHEL 系:校验该文件是否被改动
dpkg -V passwd 2>/dev/null     # Debian 系:校验包内文件
sudo find / -xdev -type f \( -perm -4000 -o -perm -2000 \) -newermt '-7 days' 2>/dev/null   # 近 7 天新增

扫描要点

要点做法说明
权限用 root 执行否则结果不完整,容易漏掉关键目录
范围加 -xdev不跨文件系统,避免扫备份盘与网络存储
同时看 SGID加 -perm -2000SGID 同样能带来越权风险
留档输出重定向到带日期的文件有基线才能看出新增项
交叉验证rpm -V / dpkg -V判断二进制是否被替换
缩小范围按修改时间筛近期文件快速定位可疑新增
-xdev 把扫描限制在当前文件系统内,能避免对挂载的备份盘与 NFS 做全量遍历,既快又少噪音,是日常巡检的推荐写法。
不要贸然去掉系统 SUID 位:passwd、sudo、mount 这类程序依赖 SUID 工作,去掉会导致用户无法改密码等故障,处理前先确认该文件是否属于发行版默认集合。
把扫描放进定期任务(cron 或 systemd timer)比临时想起来跑一次有效得多:清单按日期留存,逐日比对就能发现新增项,也便于纳入安全基线检查项做验收。

易错点

  • 漏掉 -xdev:会扫描挂载的备份盘与网络存储,既慢又噪音大
  • 只看文件名不校验内容:结合 rpm -V 或 dpkg -V 才能判断二进制是否被替换
  • 直接去掉看起来可疑的 SUID 位:可能破坏系统正常功能,先与发行版默认清单比对
  • 没有历史基线:单次扫描只能看到现状,无法发现“新出现”的后门,必须定期留存

数据来源与参考

  • man 1 find(-perm -4000)
  • CIS Benchmark:文件权限审计项

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌