我必须对删除服务器的 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)。