Ä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 -r0 chmod [Zugriffsrecht] --> Beispiel: find /home/marco -type f -print0 | xargs -r0 chmod 644 --> Dieses Beispiel weist allen Dateien (nicht Verzeichnissen) in dem Verzeichnis /home/marco 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 /home/marco 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 -r0 chmod [Zugriffsrecht] --> Diese Befehlsfolge funktioniert analog zum ersten Beispiel.

  • Das ganze geht doch auch viel einfacher mit der "Rekursiv" option von chmod. Einfach
    chmod -R [Zugriffsrechte]
    eingeben.
    Wer die manpages installiert hat kann sich über alle Optionen näher informieren mit dem Befehl
    man chmod
    Übrigens gibt es auch die Option -R für
    den Befehl
    chown
    mit dem man (wenn man dazu berechtigt ist) den Besitzer
    von Dateien/Verzeichnisse ändern kann.