Dem ein oder anderen mag die Situation vielleicht bekannt vorkommen. Nach dem Kopieren oder Entpacken von Dateien bemerkt man, dass die Dateirechte oder der Besitzer sich geändert haben.
Die Ursache ist schnell gefunden, man hat beim Entpacken Optionen wie –same-permissions und –same-owner vergessen mit anzugeben. Also einfach erneut das Archiv mit den richtigen Optionen entpacken und die Sache ist erledigt.
Was aber tun, wenn man zwischenzeitlich bereits Änderungen an den betroffenen Dateien vorgenommen hat? Nochmals das Archiv zu entpacken hätte den unangenehmen Nebeneffekt, dass man auch sämtliche Änderungen wieder neu vornehmen müsste, was durchaus reichlich Zeit beanspruchen kann.
Die erste Anlaufstelle in einem solchen Fall: Manpages lesen. Genauer gesagt die von chmod oder chown.
Schnell richtet sich unsere Aufmerkerksamkeit auf die Option –reference. Damit lassen sich die Rechte von einer Referenzdatei übertragen. Das erspart einem zumindest die Arbeit die Rechte manuell anzugeben.
Was bleibt, ist das Problem, dass man unter Umständen sehr viele Dateien mit neuen Rechten versehen muss.
Zum Glück befinden wir uns auf einer Linuxshell, die auch für diesen Fall eine Lösung für uns bereithält:
# for i in `find / -path ‚/mnt‘ -prune -o -name ‚*’`; do chmod –reference=/mnt$i $i;done
Im oben gezeigten Beispiel werden alle unter / liegende Dateien mit den Rechten von der unter /mnt gemounteten Referenzfestplatte versehen. Analog dazu funktioniert dieser Befehl natürlich auch mit chown, falls man die Dateibesitzer ändern möchte.
M | D | M | D | F | S | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
1 Kommentar
jan
14. Dez 2008 1Auch praktisch, Dateien bzw. Verzeichnisse rekursiv chmodden:
find . -type f -print0 | xargs -0 chmod 644
bzw.
find . -type d -print0 | xargs -0 chmod 755