我在网络上找到的所有方法都指出:
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文件?
                  嗯,为什么这是“不正确的”呢?你做[R EAD 牛逼他˚F riendly 中号 anual,对不对?文件的权限位完全是模式(八进制或符号)。
                
                
                  
                    —
                    0xC0000022L 
                    
                  
                
              
                  ** test **是一个文件。查找目录搜索。因此,您应该在test所在的目录上使用find。
                
                
                  
                    —
                    Nils 
                    
                  
                
              
                  @Nils:不正确。
                
                  
                    —
                    0xC0000022L 
                    
                  
                
              find(确切地说,是GNU)将使用目录和文件。他/她只是错过了-perm切换的要点。阅读手册会有所帮助。
                
                  @ 0xC0000022L有趣。我在CentOS 5上的linux-manpage告诉我它将仅使用目录。在文件上运行它有很多意义吗?
                
                
                  
                    —
                    Nils 
                    
                  
                
              
                  @Nils:不,这样做没有特别的意义。但这不会阻止您的愚蠢。无论如何,乍一看我也认为这是问题所在。las,不是这个问题。您可以尝试检查此类文件中的某些位,
                
                  
                    —
                    0xC0000022L 
                    
                  
                
              find $FILE -perm /7777以查看是否find执行此操作或阻止执行此操作。