请帮助使用 find 命令来识别 SUID 文件?

请帮助使用 find 命令来识别 SUID 文件?

我正在上在线课程,需要一些帮助。请参见下图。我正在使用 find 来查找设置了 SUID 位的文件。问题询问“名为 'immersive' 的文件的内容是什么,该文件由用户 'linux' 所有,并设置了 SUID 和用户执行权限?有多个名为 'immersive' 的文件,请找到正确的文件!”从问题中我使用了命令

find . -perm /4100

我希望这是正确的八进制权限?在图像中,您将看到返回两个目录,但是当我运行 ls -la 时,我没有看到任何设置了 SUID 的文件。知道我做错了什么吗?

$ find . -perm /4100
.
./immersive
$ ls .
immersive
$ ls -la ./immersive
lrwxrwxrwx  1   root    root   23 Aug 20 14:25 ./immersive -> /lib/firmware/immersive
linux@find-command:~$ find . -perm /4100 . ./immersive 
linux@find-command:~$ ls -la 
total 24 
drwxr-xr-x 1  linux linux   4096 Oct 13 13:00 . 
drwxr-xr-x 1  root  root    4096 Oct 11 18:56 .. 
-rw------- 1  linux linux   134  Oct 13 13:00 .bash_history 
-rw-r--r-- 17 linux linux   220  Apr  4 2018 .bash_logout 
-rw-r--r-- 17 linux linux   3771 Apr  4 2018 .bashrc
-rw-r--r-- 17 linux linux   807  Apr  4 2018 .profile
lrwxrwxrwx 1  root  root    23   Aug 20 14:25 immersive -> /lib/firmware/immersive

答案1

这个问题-perm /mode对于vs.的解释-perm -mode。我承认,这不是很直观,但是:

find . -type f -name immersive -user linux -perm -u=sx -ls
# or
find . -type f -name immersive -user linux -perm -4100 -ls

会按照你说的做。

意思-perm -4100是:查找任何为用户4设置了 (=setuid) 和1(=x) 的文件,同时忽略其余位(组和其他)。

-perm /4100另一方面的意思是:找到任何为用户设置了 (=setuid) 或 (=x)(或两者)的文件,同时4忽略1其余位。

因此/mode会找到比更多的文件-mode


如果不太明显的话(因为我关注的是-perm旗帜):其他的意思是:找到一个文件( -type f) 名称immersive归用户所有linux。所有这些条件都是 AND 关系。


要查看内容找到的文件,你可以一个接cat一个地执行,即发出

cat .../immersive

对于每个找到的文件或让find命令为您执行此操作:

find . -type f -name immersive -user linux -perm -4100 -exec cat {} \;

这将根据上述条件查找文件,但不会打印它们的名称和属性( ) ,而是对每个找到的文件-ls执行命令。cat

答案2

尝试这个命令:

find / -name immersive 2> /dev/null

它还会显示所有隐藏文件。希望这对您有所帮助

相关内容