-perm /6000 和 -perm /u+s 之间的查找和差异

-perm /6000 和 -perm /u+s 之间的查找和差异

我一直在尝试使用“oneliner”查找setuid可执行文件。

我首先尝试的线路是:

find / -perm /u+s -type f

然后我发现一行类似但给出了不同的结果:

find / -perm /6000 -type f

据我所知,这些看起来是相同的,但第一个显示的结果没有第二个那么多(大多数都缺少奇怪的组)。为什么,有什么不同?

答案1

大多数人不知道,Unix 权限实际上不仅仅是用户、组和其他 (rwx)。这 3 个三元组是允许用户、组和其他用户访问文件和目录的典型权限。然而,还有一组位于用户位之前的位。这些位被称为“特殊模式”。

它更多的是一种速记符号,您在处理诸如chmod.

$ chmod 644

实际上相当于:

$ chmod 0644

这是位列表:

摘录维基百科文章标题为:chmod

Flag                Octal value     Purpose
----                -----------     -------
S_ISUID             04000           Set user ID on execution
S_ISGID             02000           Set group ID on execution
S_ISVTX             01000           Sticky bit
S_IRUSR, S_IREAD    00400           Read by owner
S_IWUSR, S_IWRITE   00200           Write by owner
S_IXUSR, S_IEXEC    00100           Execute/search by owner
S_IRGRP             00040           Read by group
S_IWGRP             00020           Write by group
S_IXGRP             00010           Execute/search by group
S_IROTH             00004           Read by others
S_IWOTH             00002           Write by others
S_IXOTH             00001           Execute/search by others

你的问题

因此,在您要查找的第一个命令中u+s,结果将是 bit 04000。当您使用数字符号时,您需要的是位04000 02000。这将为您提供设置了用户或组 setuid 位的文件。

进一步阅读

我强烈建议任何想要更好地了解 Unix 权限的人阅读维基百科页面关于chmod。它非常简单地将其分解,并且在您忘记时是一个很好的参考。

参考

答案2

模式6000u+s,g+s,而不仅仅是u+s(那就是4000)。

find / -perm /u+s或者find / -perm /4000只查找设置了 setuid 位的文件。find / -perm /u+sfind / -perm /6000查找设置了 setuid 位或 setgid 位的文件。

相关内容