Ich muss eine Prüfung bezüglich der Entfernung von Root-Rechten für einen Server durchführen. Um das Risiko zu minimieren, dass etwas kaputt geht oder den Weg des Dodos geht, möchte ich nach allen Root-eigenen Dateien/Ordnern in Ordnern suchen, die nicht dem Root gehören.
Gibt es eine Möglichkeit, die Dateien zu finden und aufzulisten, beispielsweise:
> 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]
als
/bin/opt/monit
...
Danke schön.
Antwort1
1
find /starting/path -type d ! -user root -exec find {} -maxdepth 1 -user root \;
Für jedes Verzeichnis, das nicht dem Root-Verzeichnis gehört, find
wird eine separate Ausführung ausgeführt, die die direkten untergeordneten Verzeichnisse auflistet, die dem Root-Verzeichnis gehören.
2
find /starting/path -user root -execdir sh -c 'test `stat -c %U ./` != root' \; -print
Für jede Datei, die dem Root gehört, wird eine separate Shell ausgeführt, die prüft, ob das übergeordnete Verzeichnis nicht dem Root gehört.
Die beiden Befehle haben unterschiedliche Leistung. Der erste erstellt einen untergeordneten Prozess für jedes Verzeichnis, das nicht root gehört. Der zweite Befehl erstellt zwei Prozesse für jede Datei, die root gehört. Wenn Sie relativ wenige solcher Verzeichnisse und viele solcher Dateien erwarten, verwenden Sie (1). Wenn Sie viele solcher Verzeichnisse und wenige solcher Dateien erwarten, verwenden Sie (2) (evtl.).
Im Allgemeinen haben Sie mehr Dateien als Verzeichnisse, deshalb sollten Sie (1) bevorzugen.