如何搜索所有SUID/SGID文件?

如何搜索所有SUID/SGID文件?

我在网上找到的所有指南都指出:

Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print 

但事实并非如此。看:

$ ls -lah test
-r-sr-xr-x  1 user  user     0B Jan 24 22:47 test
$ 
$ 
$ stat -x test | grep Mode
  Mode: (4555/-r-sr-xr-x)         Uid: ( 1000/    user)  Gid: ( 1000/    user)
$ 
$ 
$ find test -perm 4000
$ find test -perm 2000
$

问题:那么真相又是什么呢?如何真正列出所有 SUID/SGID 文件?

答案1

如果你想测试任何位,使用/.即对于您的用例:

find "$DIRECTORY" -perm /4000

和:

find "$DIRECTORY" -perm /2000

或组合:

find "$DIRECTORY" -perm /6000

您可以使用文件夹和文件作为 GNU 的参数find

另一种在我看来更易读的方法是使用助记符快捷方式。 IE:

find "$DIRECTORY" -perm /u=s,g=s

买者自负

请记住,不同的变体是find不同的。他们的行为也可能不同。请务必阅读友好手册 (RTFM)。

答案2

通过使用以下命令,您可以枚举所有具有 SUID 权限的二进制文件。-perm -u=s该工具的标志可以find解决这个问题:

find / -perm -u=s -type f 2>/dev/null

相关内容