我必須對伺服器根權限的刪除進行審核。為了最大限度地減少破壞或妨礙渡渡鳥的風險,我想搜尋非根擁有的文件夾內的所有根擁有的文件/資料夾。
有沒有辦法找到並列出文件,例如:
> 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)。