サーバーのルート権限の削除に関する監査を行う必要があります。何かが壊れたり絶滅したりするリスクを最小限に抑えるために、ルートが所有していないフォルダー内にあるルートが所有するすべてのファイル/フォルダーを検索したいと思います。
次のようなファイルを検索して一覧表示する方法はありますか?
> 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 \;
ルートによって所有されていないディレクトリごとに、find
ルートによって所有されている直接の子ディレクトリをリストする個別のコマンドが実行されます。
2
find /starting/path -user root -execdir sh -c 'test `stat -c %U ./` != root' \; -print
root が所有するファイルごとに、親ディレクトリが root によって所有されていないかどうかをテストする別のシェルが実行されます。
2 つのコマンドのパフォーマンスは異なります。最初のコマンドは、ルートが所有していないすべてのディレクトリに対して子プロセスを作成します。2 番目のコマンドは、ルートが所有するすべてのファイルに対して 2 つのプロセスを作成します。そのようなディレクトリが比較的少なく、そのようなファイルが多いと予想される場合は、(1) を使用します。そのようなディレクトリが多く、そのようなファイルが少ないと予想される場合は、(2) を使用するとよいでしょう。
一般的にはディレクトリよりもファイルの方が多いので、(1) を優先するべきです。