chmod rekursiv auf Dateien und Verzeichnisse anwenden

Das Unix Rechtesystem ist im Prinzip recht einfach gestrickt; so einfach, dass man auch recht schnell an seine Grenzen stösst. Dazu gehört zB das Ändern von den Rechten rekursiv über einen ganzen Verzeichnisbaum. Das Problem hierbei ist, dass Verzeichnisse das execute-Bit benötigen und Dateien idR dieses nicht. Aber man kann sich einen Parameter des find-Befehls zu Nutze machen → -type. Durch diesen Parameter kann find zwischen einem Verzeichnis und einer Datei unterscheiden und zB via xargs die Ausgabe direkt an chmod weiterreichen.

Um zuerst die Verzeichnisse (type -d → Directory) rekursiv zu ändern verwenden Sie folgenden Befehl:

$ find . -type d -print0 | xargs -0 chmod 755

Um die Dateien (type -f → File) im Anschluss daran rekursiv zu ändern, gehen Sie wie folgt vor:

$ find . -type f -print0 | xargs -0 chmod 644

Achtung: Der find-Befehl arbeitet immer rekursiv durch alle Unterverzeichnisse. Werden die og Kommandos zB im Root Verzeichnis '/' ausgeführt, werden die Berechtigungen des gesamten Systems neu gesetzt; ein Totalschaden ist vorprogrammiert. Um das og Kommando nur auf das aktuelle Verzeichnis zu beschränken, müssen Sie die Verzeichnistiefe des find-Befehls mit -maxdepth 1 einschränken. Der nach dem find-Kommando folgende Punkt (.) zeigt das aktuelle Verzeichnis an. Wenn Sie rekursiv ab einem bestimmten Verzeichnis die Rechte ändern wollen, müssen Sie zuerst mit cd dorthin navigieren oder den Pfad an Stelle des Punktes angeben. Weitere Informationen erhalten Sie im Artikel -> find: Syntax und Beispiele

Beispiel: find . -maxdepth 1 -type d -print0 | xargs -0 chmod 755
Beispiel: find /pfad/zum/verzeichnis -maxdepth 1 -type d -print0 | xargs -0 chmod 755

Verwandte Artkel:
-> find: Syntax und Beispiele
-> xargs: Syntax und Beispiele

pronto 2010/05/09 18:44