列出非根文件夹中所有由根拥有的文件

列出非根文件夹中所有由根拥有的文件

我必须对删除服务器的 root 权限进行审核。为了将发生故障或出现问题的风险降至最低,我想在非 root 拥有的文件夹中搜索所有 root 拥有的文件/文件夹。

有没有办法查找并列出如下文件:

> ls -la
drwxr-xr-x. 24 admin users     4096 Sep 27 12:53 .      [non root folder]
dr-xr-xr-x. 28 root root       4096 Mar 15  2017 ..
drwxrwxr-x.  2 admin users     4096 Sep 27 13:00 bin
drwxr-xr-x.  6 root  root      4096 Feb  9  2017 monit  [root file/folder]

作为

/bin/opt/monit
...

谢谢。

答案1

1

find /starting/path -type d ! -user root -exec find {} -maxdepth 1 -user root \;

对于每个不属于 root 的目录,find都会执行单独的操作,列出属于 root 的直接子目录。

2

find /starting/path -user root -execdir sh -c 'test `stat -c %U ./` != root' \; -print

对于每个由 root 拥有的文件,都会执行一个单独的 shell,以测试父目录是否不由 root 拥有。


这两个命令的性能不同。第一个命令为每个不属于 root 的目录创建一个子进程。第二个命令为每个属于 root 的文件创建两个进程。如果您预计此类目录相对较少,而此类文件较多,请使用 (1)。如果您预计此类目录较多,而此类文件较少,则可能使用 (2)。

一般来说,您的文件数量通常比目录数量多,因此您应该选择 (1)。

相关内容