Ich möchte alle Verzeichnisse auflisten, für die ein Benutzer oder eine Gruppe Schreibberechtigungen hat.
Ich habe diese Frage in ServerFault gefunden , sie bezieht sich jedoch auf einen Windows Server. Daher bin ich optimistisch, dass es in der Linux-Community etwas Besseres für uns gibt. Gleichzeitig ist mir klar, dass diese Frage eine rekursive Wendung aufweist, die sie ohne ein lang laufendes Skript möglicherweise unmöglich macht.
Mir sind die folgenden nützlichen Befehle bekannt:
- Listen Sie alle Gruppen auf:
cut -d : -f 1 /etc/group
- Alle Benutzer auflisten:
cut -d : -f 1 /etc/passwd
- Holen Sie sich das Home-Verzeichnis eines Benutzers:
getent passwd user-name| cut -d: -f 6
- Dieses Skript listet jeden Benutzer und seine Gruppenzuweisungen auf
- Abrufen von Berechtigungen und Benutzer- / Gruppendetails zum Ordnerinhalt:
ls -la
Wenn ich jedoch keine Ahnung habe, was der Zweck eines Benutzers ist, wäre es schön, eine Liste ALLER Verzeichnisse aufzurufen, für die er eine Schreibberechtigung hat, und sich von dort aus umzuschauen. Wenn nichts anderes, ist es ein sehr nützliches Audit.
Wenn es hilft, meinen Zweck zu verstehen, habe ich einige Systeme geerbt (oder bin ich zumindest Babysitter?), Nachdem unser SysAdmin eine neue Position eingenommen hat. Daher habe ich versucht, die Entwicklung dieser beiden Systeme zu verstehen, z. B. welche Software installiert ist und wo (..ugh), wo verschiedene Konfigurationsdateien gespeichert sind und welche verschiedenen Gruppen und Benutzer jetzt erstellt wurden - einschließlich die Verzeichnisse, in die sie schreiben dürfen. Normalerweise kann ich solche nützlichen Terminalbefehle hier auf askubuntu finden, aber wenn ich diesen nicht finde, dachte ich, ich würde weitermachen und fragen.
Das genaue System ist Ubuntu 10.04.2, aber wir unterstützen auch Ubuntu 12.04.5, daher ist die versionunabhängigste Lösung die beste. Vielen Dank im Voraus für jede Hilfe.
[Update: Erste Ergebnisse für die beiden schnellen Antworten]
Es ist erwähnenswert, dass ich als Root für diese angemeldet war und /
mein Arbeitsverzeichnis war. Außerdem brauchten sie eine vergleichbare Zeit zum Laufen.
@ Rinzwinds kombinierter Befehl erhielt die folgende Ausgabe in ungefähr 5,5 Minuten.
root@tatooine:/# sudo find -type d \( \( -user ftpgisdata -perm /u=w \) -o \( -group ftpgisdata -perm /g=w \) -o -perm /o=w \)
./tmp
./tmp/.ICE-unix
./tmp/.X11-unix
find: `./proc/6594/task/6594/fd/5': No such file or directory
find: `./proc/6594/task/6594/fdinfo/5': No such file or directory
find: `./proc/6594/fd/5': No such file or directory
find: `./proc/6594/fdinfo/5': No such file or directory
./var/tmp
./var/lib/php5
./var/crash
./var/lock
./home/ftpgisdata
./home/ftpgisdata/.ssh
./home/ftpgisdata/.cache
./home/sitename-i-changed.com/wp-content/profile-pics
./dev/shm
@ Olis überarbeiteter Befehl bekommt etwas sehr Ähnliches, auch in ca. 5,5 Minuten ..
root@tatooine:/# sudo find / -type d -print0 | sudo -u ftpgisdata xargs -0 sh -c 'for p; do [ -w "$p" ] && echo "$p"; done' -
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix
find: `/proc/15541': No such file or directory
find: `/proc/15542': No such file or directory
find: `/proc/15543': No such file or directory
find: `/proc/15567': No such file or directory
find: `/proc/15568/task/15568/fd/5': No such file or directory
find: `/proc/15568/task/15568/fdinfo/5': No such file or directory
find: `/proc/15568/fd/5': No such file or directory
find: `/proc/15568/fdinfo/5': No such file or directory
/var/tmp
/var/lib/php5
/var/crash
/var/lock
/home/ftpgisdata
/home/ftpgisdata/.ssh
/home/ftpgisdata/.cache
/home/sitename-i-changed.com/wp-content/profile-pics
/dev/shm
Die Antwort von @PeterCordes lieferte ähnliche Ergebnisse in etwa 5,5 Minuten.
root@tatooine:~# username_to_check=ftpgisdata base_dir=/ # for example
root@tatooine:~# sudo -u "$username_to_check" find "$base_dir" -type d -writable 2>/dev/null ## GNU find, not POSIX
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix
/proc/7159/task/7159/fd
/proc/7159/fd
/proc/7159/map_files
/var/tmp
/var/lib/php5
/var/crash
/var/lock
/home/ftpgisdata
/home/ftpgisdata/.ssh
/home/ftpgisdata/.cache
/home/sitename-i-changed.com/wp-content/profile-pics
/dev/shm