find / -type f -perm -4000 2>/dev/null 能精确定位所有带 suid 权限的可执行文件,因 -perm -4000 准确匹配仅含 suid 位的普通文件,配合 -type f 排除目录干扰,2>/dev/null 屏蔽错误,结果干净可靠。

直接用 find / -type f -perm -4000 2>/dev/null 就能精确定位所有带 SUID 权限的可执行文件路径,无需额外过滤或二次处理。
为什么用 -perm -4000 而不是其他写法
八进制 4000 是 SUID 的标准权限位标识,- 表示“包含该位即可”,不强制要求其他权限。这比 -perm /4000(表示“任意一位匹配”)更准确,也比符号写法 -perm -u=s 更通用——尤其在较老系统或 BusyBox 环境中兼容性更好。
-
-perm -4000:只匹配设置了 SUID 位的普通文件,结果干净、无误报 -
-perm /4000:可能匹配到权限位为 0000 但其他位恰好“与 4000 做按位或后非零”的异常情况(极少见但存在) -
-perm -u=s:语义清晰,但部分精简版 find(如 Alpine 默认的 busybox find)不支持符号模式
加 -type f 是关键限定
SUID 只对可执行文件有意义,目录或设备文件即使设置了 4000 位也不触发提权行为。加上 -type f 可排除 /dev/、/proc/、/sys/ 下大量伪文件和目录干扰,让输出全是真实可执行路径。
- 不加 -type f 时,find 可能返回 /usr/bin、/bin 这类目录(若其权限被误设为 4755),造成误判
- 配合
2>/dev/null屏蔽权限错误,实际运行中基本只看到有效路径,例如:
/usr/bin/passwd
/bin/ping
/usr/bin/sudo
/usr/bin/find
需要进一步缩小范围?优先检查标准二进制目录
绝大多数合法 SUID 程序集中在固定路径,盲目扫全盘效率低且噪音大。可先聚焦以下位置:
sudo find /usr/bin /bin /sbin /usr/sbin -type f -perm -4000 2>/dev/null- 若怀疑异常程序,再补查
/opt、/usr/local/bin等第三方安装目录 - 加
-ls查看完整权限与所有者:find /usr/bin -type f -perm -4000 -ls 2>/dev/null,一眼识别是否属 root 且执行位为小写 s
确认结果是否真能提权?简单验证方法
找到路径后,用 ls -l 看权限字段第三位是否为 s(如 -rwsr-xr-x),并确认所有者是 root:
-
ls -l $(which find)→ 若显示-rwsr-xr-x 1 root root ... /usr/bin/find,说明它可被用于提权 - 快速测试:运行
find . -maxdepth 0 -exec whoami \;不会提权;但换成find . -maxdepth 0 -exec /bin/sh -p \;(-p 保留特权)就能进入 root shell











