find设置了UID位的所有文件

我试图find具有“SUID”权限的所有文件,并将其写入文本文件,但是当我运行以下命令时,文本文件是空的:

sudo find / -perm 4000 > suid.txt 

我的命令有问题吗?

正确的语法是:

 sudo find / -perm -4000 > suid.txt 

要么

 sudo find / -perm -u+s > suid.txt 

例如:

 sudo find / -perm -4000 -exec ls -l {} + 

给出这个输出:

 -rwsr-xr-x 1 root root 30800 May 15 2015 /bin/fusermount -rwsr-xr-x 1 root root 94792 Sep 2 2015 /bin/mount -rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping -rwsr-xr-x 1 root root 44680 May 7 2014 /bin/ping6 -rwsr-xr-x 1 root root 36936 Jan 27 2016 /bin/su <truncated> 

你的命令的问题是,它正在寻找模式位set UID位设置, 没有其他设置。 添加-前缀将查找设​​置了uid的所有模式,而不考虑其他位。

man find

-perm模式

文件的权限位完全是模式(八进制或符号)。 由于需要完全匹配,因此如果要将此表单用于符号模式,则可能必须指定相当复杂的模式字符串。 例如,-perm g = w只会匹配具有模式0020的文件(即,只有组写入权限是唯一权限集的文件)。 这更可能是你想要使用/' or – '形式,例如-perm -g = w,它与具有组写入权限的任何文件相匹配。

-perm -mode

所有的权限位模式都是为文件设置的。 符号模式被接受在这种形式,这通常是想要使用它们的方式。 如果使用符号模式u',必须指定u', g'或'o'。