我在网络上找到的所有方法都指出:
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
执行此操作或阻止执行此操作。