如何找到权限大于 xxx 的文件但忽略具有 SUID 和 SGID 的文件

the*_*ien 4 find

我正在尝试查找权限超过 755 的文件。使用此处另一篇文章中的解决方案,我已经能够获得我想要的大部分内容:

find /bin -type f -perm -755 ! -perm 755
Run Code Online (Sandbox Code Playgroud)

这确实会忽略 755 或以下的任何内容,但它会返回设置了 SUID 和 SGID 位的文件。我想忽略这些。是否可以在一个命令中执行此操作?我试过多次! -perm与两个参数20004000,但没有做任何事情。

我也在顺序命令中使用了27554755,但同样,我更喜欢在一个命令中同时覆盖这两个命令。

我认为-o操作符会有所帮助,但我不确定如何使用包含我正在使用的否定模式的参数来做到这一点。我试过了

find . -type f \(-perm -2755 ! -perm 2755 -o -perm -4755 ! -perm 4755\)
Run Code Online (Sandbox Code Playgroud)

但这只是抛出了paths must precede expression错误。

use*_*445 5

适用于任何POSIX 兼容查找的解决方案如下:

find DIR -type f -perm -0755 ! -perm 0755 ! -perm -04000 ! -perm -02000 -print
Run Code Online (Sandbox Code Playgroud)

如前所述,使用 GNU find,您可以将 setuid 和 setgid 测试折叠到! -perm /06000.