使用 find -perm 查找 setuid 文件

Sou*_*orn 1 setuid permissions find

我想找到所有 suid 二进制文件的列表。我使用命令

find / -perm 4000
Run Code Online (Sandbox Code Playgroud)

然而,这并没有给我任何输出。我了解到 SUID 文件可能处于 4xxx 权限模式。但是如果我发出命令

find / -perm -4000 (which all websites tell)
Run Code Online (Sandbox Code Playgroud)

或命令

find / -perm +4000 
Run Code Online (Sandbox Code Playgroud)

两者都给我相同的结果。据我所知它应该总是+4000(因为如果它是用户 suid 二进制,那么第一个字节应该是 4,如果组 suid 二进制然后第一个字节应该是 2,如果一个粘滞位打开目录,那么第一个字节应该是是 1)。那-4000怎么也给结果呢?

Has*_*tur 6

的使用似乎已被弃用。也许来自的帮助可以帮助解决您的疑问:-perm +modeman find

-perm? 模式

    文件的权限位完全是模式(八进制或符号)。由于需要精确匹配,如果您想将这种形式用于符号模式,您可能必须指定一个相当复杂的模式字符串。例如,-perm g=w将仅匹配模式为 0020 的文件(即组写入权限是唯一权限集的文件)。例如,您更有可能希望使用 ' /' 或 ' ' 形式-perm -g=w,它们匹配具有组写权限的任何文件。有关一些说明性示例,请参阅示例部分。

-perm? -模式

    为文件设置 了所有权限位模式。符号模式以这种形式被接受,这通常是使用它们的方式。如果使用符号模式u,则必须指定“ ”、“ g” 或“ o”。有关一些说明性示例,请参阅示例部分。

-perm? /模式

    为文件设置了 任何权限位模式。这种形式接受符号模式。如果使用符号模式u,则必须指定“ ”、“ g” 或“ o”。有关一些说明性示例,请参阅示例部分。如果mode中没有设置权限位,则此测试匹配任何文件(这里的想法是与 的行为保持一致-perm -000)。

-perm? +模式

    已弃用的旧方式搜索具有模式设置中任何权限位的文件。 你应该改用。尝试在符号模式中使用 ' ' 语法会产生令人惊讶的结果。例如,' ' 是有效的符号模式(相当于 +u,+x,即 0111),因此不会被评估为,而是作为精确模式说明符,因此它匹配具有精确权限 0111 的文件而不是具有任何执行位设置。 如果您发现这一段令人困惑,那么您并不孤单——只需使用. 这种形式的测试已被弃用,因为 POSIX 规范要求解释前导 '-perm /mode++u+x-perm +mode-perm mode-perm /mode-perm+' 作为符号模式的一部分,因此我们转而使用 ' /'。

参考:

  • 查找(GNU findutils)4.4.2