Mit CHMOD -R [xxx] * werden die Rechte für alle Dateien und Verzeichnisse im aktuellen und allen Unterverzeichnissen gesetzt.
Sollen nur die Rechte für Verzeichnisse oder bestimmte Dateien bearbeitet werden, ist das mit folgendem kleinen Trick möglich. Rechte für alle Dateien in allen Unterverzeichnissen setzen:
find . -type f -exec chmod 644 {} \;
Mit find werden die den Kriterien entsprechenden Dateien gesucht. Der Punkt besagt, das im aktuellen Verzeichniss begonnen werden soll. -type f grenzt die zu suchenden Daten auf den Typ File ein. Es werden also nur Dateien behandelt, und das per -exec übergebene Kommando auf alle gefundenen Dateien angewendet.
find . -type d -exec chmod 644 {} \;
setzt demnach die Rechte für alle Unterverzeichnisse des aktuellen Standorts.
Es kann dabei zu Problemen mit Datei/Verzeichnisnamen kommen, die Leerzeichen, Anführungszeichen oder Backslashes enthalten. Daher ist folgender Aufruf zu empfehlen (Infos siehe “man xargs” und “man find”):
find . -type f -print0 | xargs -0 chmod 644
Bitte korrigiere das fehlende Leerzeichen vor dem Backslash!
es muss heissen:
find . -type f -exec chmod 644 {} \;
sonst erhält man einen fehler:
find: missing argument to `-exec’
in “verbaler” Schreibweise wäre das (644) übrigens:
find . -type f -exec chmod a=r,u+w {} \;
und 755 wäre dann:
find . -type f -exec chmod a=rx,u+w {} \;
Danke für den Hinweis. Ist korrigiert.
Danke für diesen klasse Tipp, die Seite ist direkt mal in meine Bookmarks gewandert.
Grüße vom Bodensee
Wolfgang Wagner
Prima Anleitung! Sowas habe ich gerade gebraucht.
Gruß Dirk