[[:tux|{{ :linux.png?40|}}]]
===== 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 [[:tux:find|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 [[:tux:find|-> 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:**
[[:tux:find|-> find: Syntax und Beispiele]]
[[:tux:xargs|-> xargs: Syntax und Beispiele]]
--- //pronto 2010/05/09 18:44//
{{keywords>linux osx unix find xargs rekursiv}}