直接运行sudo find / -type f -perm -4000 2>/dev/null可完整检索所有suid文件;-perm -4000表示匹配suid位被设置的文件,非精确匹配;推荐加-xdev跳过伪文件系统,并用-printf或-awk输出所有者、权限及路径以便高危识别。

直接运行 find / -type f -perm -4000 2>/dev/null 就能列出系统中所有带 SUID 权限的普通可执行文件。
这个命令简洁有效,但要注意几个关键点才能真正用好。
必须加 sudo 才能完整扫描
普通用户没有权限访问 /root、/proc 下部分路径等,不加 sudo 会漏掉大量结果,甚至得不到任何输出。正确写法是:
sudo find / -type f -perm -4000 2>/dev/null
为什么用 -perm -4000 而不是 -perm 4000
-
-perm -4000表示“SUID 位被设置”,不管其他权限如何(如-rwsr-xr-x、-rwsr-sr-x都匹配); -
-perm 4000是精确匹配,要求权限刚好等于4000(即----x---x),实际几乎找不到文件。
所以-perm -4000是标准且实用的选择。
推荐加上 -ls 或格式化输出,方便快速判断
光看路径不够,得同时看到权限、所有者和位置:
sudo find / -type f -perm -4000 -ls 2>/dev/null | awk '{print $3, $11}' # 输出所有者 + 路径
或者更清晰地显示权限字符串:
sudo find / -type f -perm -4000 -printf "%M %u %p\n" 2>/dev/null | sort
这样一眼就能看出是不是 root 所有、路径是否异常(比如出现在 /tmp 或 /home/xxx)。
跳过伪文件系统,避免卡顿和报错
虽然 2>/dev/null 能屏蔽错误,但遍历 /proc、/sys、/dev 仍可能拖慢速度或触发内核阻塞。更稳妥的做法是加 -xdev:
sudo find / -xdev -type f -perm -4000 -printf "%M %u %p\n" 2>/dev/null
-xdev 表示不跨文件系统,自动跳过挂载的虚拟文件系统,既安全又高效。
不复杂但容易忽略:SUID 文件本身不是漏洞,关键在路径、属主和用途。查出来之后,优先看是不是在 /tmp、属主是不是 nobody、名字像不像 shellx 或 backdoor——这些才是真正要盯紧的。











