列出非根資料夾中所有根擁有的文件

列出非根資料夾中所有根擁有的文件

我必須對伺服器根權限的刪除進行審核。為了最大限度地減少破壞或妨礙渡渡鳥的風險,我想搜尋非根擁有的文件夾內的所有根擁有的文件/資料夾。

有沒有辦法找到並列出文件,例如:

> 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)。

相關內容