我试图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'。