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 -u=s,但更直观、更少歧义。别混淆成:
-
-perm /4000:也能匹配,但语义是“任意一位匹配”,实际效果类似,但可读性差,不推荐; -
-perm 4000(无符号):要求权限**恰好等于** 4000,即文件必须是---s------,现实中几乎不存在; -
-perm -6000:那是 SUID+SGID,不是纯 SUID。
加 -type f 和 2>/dev/null 是基本操作
不加限制容易误报或卡住:
-
-type f排除目录、设备文件、符号链接等,只关注可执行文件本身; -
2>/dev/null屏蔽 “Permission denied” 类错误,避免大量干扰信息刷屏——特别是非 root 用户执行时; - 如果想看详细权限,可在末尾加
-ls,例如:find / -type f -perm -4000 2>/dev/null -ls,会输出类似-rwsr-xr-x 1 root root ... /usr/bin/passwd的完整行。
实际检查时建议限定范围再深入
全盘扫描耗时且结果太多,优先聚焦高风险区域:
sudo find /usr/bin -type f -perm -4000 2>/dev/nullsudo find /bin -type f -perm -4000 2>/dev/null-
sudo find /opt -type f -perm -4000 2>/dev/null(第三方软件常被忽略)
看到结果后,重点看文件所有者是否为 root、是否在预期路径、是否由可信包安装(可用 dpkg -S 或 rpm -qf 反查)。
SUID 文件识别与风险判断要点
执行 ls -l 看输出最左边的权限字段:
-
-rwsr-xr-x:小写 s → 有 SUID 且所有者有执行权,典型如passwd; -
-rwSr--r--:大写 S → 有 SUID 但所有者无执行权,这种一般无实际提权能力; - 非 root 所有、又带 SUID 的文件(如
root:users但属普通用户)需高度警惕; - 出现在
/tmp、/dev/shm或用户可写目录下的 SUID 文件,极大概率是恶意植入。











