Linux-Tipp 4
Ändern von Zugriffsrechten in ganzen
Verzeichnisbäumen
Bei der intensiven Arbeit mit Linux kommt es häufiger
vor, dass man nicht nur die Zugriffsrechte einzelner Dateien,
sondern die ganzer Teilbereiche im Verzeichnisbaum ändern
möchte. Derartige Aufgaben lassen sich schon mit den
Bordmitteln der gängigen Linux-Distributionen
elegant bewältigen. Eine mögliche Lösung ist der
folgende Befehl:
find [Verzeichnis] -type f -print0 | xargs -0 -r0 chmod [Zugriffsrecht] --
Beispiel:
find ~/dokumente -type f -print0 | xargs -0 -r0 chmod 644 --
Dieses Beispiel weist allen Dateien (nicht Verzeichnissen)
in dem Verzeichnis dokumente in Heimatverzeichnis (~) des
ausführenden Benutzers und seinen Unterverzeichnissen
das Zugriffsrecht 644 (rw-r----) zu.
Warum und wie funktioniert diese Befehlsfolge? Das ist schnell
erklärt:
Zunächst werden mit Hilfe des find-Befehls alle Dateien
(-f) in dem Verzeichnis ~/dokumente und seinen
Unterverzeichnissen (macht find automatisch) aufgespürt
und ausgegeben (-print0). Diese Ausgabe wird dann dem
Programm xargs zugeführt (|), dessen Aufgabe üblicherweise
darin besteht, Kommandozeilen zusammenzusetzen und
auszuführen.
Xargs wird zunächst mitgeteilt, dass wir das nachfolgende
Kommando nicht ausführen wollen (-r0), wenn der
find-Befehl kein Ergebnis lieferte. Falls wir jedoch
einen oder mehrere Dateinamen von find erhalten haben, dann
soll xargs diese als Parameter für den chmod-Befehl (--)
verwenden und diesen wie angegeben ausführen.
Das obige Beispiel lässt sich leicht für den
Einsatz mit Verzeichnissen (-d) statt mit Dateien (-f)
umschreiben:
find [Verzeichnis] -type d -print0 | xargs -0 -r0 chmod [Zugriffsrecht] --
Diese Befehlsfolge funktioniert analog zum ersten Beispiel.
Weiterführende Literatur:
-
Die Online-Hilfe der verschiedenen Utilities (man find, man
xargs etc.)
|