我想找到所有 suid 二进制文件的列表。我使用命令
find / -perm 4000
然而,这并没有给我任何输出。据我了解,SUID文件可能处于4xxx权限模式。但是如果我发出命令
find / -perm -4000 (which all websites tell)
或命令
find / -perm +4000
两者都给我相同的结果。据我了解,它应该始终是+4000(因为如果它是用户suid二进制文件,那么第一个字节应该是4,如果组suid二进制文件,那么第一个字节应该是2,如果粘性位打开目录,那么第一个字节应该是是 1)。那为什么-4000也给出结果呢?
答案1
似乎已被弃用。也许以下的帮助可以帮助解决您的疑问:-perm +mode
man find
-perm
模式文件的权限位恰好是模式(八进制或符号)。由于需要精确匹配,如果您想将此形式用于符号模式,则可能必须指定相当复杂的模式字符串。例如,
-perm g=w
将仅匹配模式为 0020 的文件(即组写权限是唯一权限集的文件)。例如,您更有可能希望使用 '/
' 或 ' ' 形式,它与任何具有组写入权限的文件相匹配。请参阅–
-perm -g=w
例子部分的一些说明性示例。
-perm
-模式所有权限位模式是为文件设置的。符号模式以这种形式被接受,这通常是使用它们的方式。如果使用符号模式,则必须指定“
u
”、“g
”或“ ”。o
请参阅例子部分的一些说明性示例。
-perm
/模式任何权限位模式是为文件设置的。这种形式接受符号模式。如果使用符号模式,则必须指定“
u
”、“g
”或“ ”。o
请参阅例子部分的一些说明性示例。如果没有权限位模式设置后,此测试会匹配任何文件(这里的想法是与 的行为保持一致-perm -000
)。
-perm
+模式已弃用的旧方法,用于搜索具有以下任何权限位的文件模式放。 你应该改用。尝试将 ' ' 语法与符号模式一起使用
-perm /mode
+
会产生令人惊讶的结果。例如,'+u+x
' 是一种有效的符号模式(相当于 +u,+x,即 0111),因此不会被评估为,而是作为精确的模式说明符,所以它匹配具有精确权限 0111 的文件,而不是设置了任何执行位的文件。-perm +mode
-perm mode
如果您发现本段内容令人困惑,那么您并不孤单 – 只需使用.-perm /mode
这种形式的-perm
测试已被弃用,因为 POSIX 规范要求将前导 ' ' 解释+
为符号模式的一部分,因此我们转而使用 '/
'。
参考:
- 查找(GNU findutils)4.4.2