df8oe
Anmeldungsdatum: 22. März 2006
Beiträge: 233
Wohnort: Schwaförden
|
Hallo an alle, folgende Aufgabe kommt immer wieder, und da meine Konsolenkenntnisse dazu zu gering sind, wird das jedesmal ein Akt... Ich habe komplette Verzeichnisse, deren Rechte ich neu vergeben muß. So z.B. ein Verzeichnis mit allen Unterverzeichnissen an einen neuen User/Gruppe übergeben. Mit chmod -R übergebe ich die Eigentumsverhältnisse komplett, nur sind in dem Ordner selbst Strukturen aus Ordnern und Dateien (keine ausführbaren). Daher muß ich auf jeden Ordner ein chmod 755 und auf alle Dateien ein chmod 644 durchführen. Bislang starte ich zunächst das chmod -R 644 auf alles innerhalb des Hauptordners und suche mir händisch alle Ordner innerhalb des Ordners raus, um sie explizit und einzeln mit einem chmod 755 zu versehen. Ich denke, das geht auch einfacher - nur wie?? df8oe
|
Lux
Anmeldungsdatum: 10. November 2005
Beiträge: 5152
Wohnort: Grüt (Gossau ZH), Schweiz
|
df8oe schrieb: Ich habe komplette Verzeichnisse, deren Rechte ich neu vergeben muß. So z.B. ein Verzeichnis mit allen Unterverzeichnissen an einen neuen User/Gruppe übergeben. Mit chmod -R übergebe ich die Eigentumsverhältnisse komplett, nur sind in dem Ordner selbst Strukturen aus Ordnern und Dateien (keine ausführbaren). Daher muß ich auf jeden Ordner ein chmod 755 und auf alle Dateien ein chmod 644 durchführen. Bislang starte ich zunächst das chmod -R 644 auf alles innerhalb des Hauptordners und suche mir händisch alle Ordner innerhalb des Ordners raus, um sie explizit und einzeln mit einem chmod 755 zu versehen. Ich denke, das geht auch einfacher - nur wie??
| find /pfad/zum/basisordner -type f | xargs -r chmod 644
find /pfad/zum/basisordner -type d | xargs -r chmod 755
|
Gruss Dirk
|
df8oe
(Themenstarter)
Anmeldungsdatum: 22. März 2006
Beiträge: 233
Wohnort: Schwaförden
|
Thanx - das war es..... Ich bedanke mich für die Hilfe! df8oe
|
Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
Lux schrieb:
| find /pfad/zum/basisordner -type f | xargs -r chmod 644
find /pfad/zum/basisordner -type d | xargs -r chmod 755
|
find /pfad/zum/basisordner -type f -exec chmod 644 {} +
find /pfad/zum/basisordner -type d -exec chmod 755 {} +
Das ist robuster. In der zsh geht es übrigens auch ohne find:
chmod 644 **/*(.)
chmod 755 **/*(/)
|
Lux
Anmeldungsdatum: 10. November 2005
Beiträge: 5152
Wohnort: Grüt (Gossau ZH), Schweiz
|
Lunar schrieb: find /pfad/zum/basisordner -type f -exec chmod 644 {} +
find /pfad/zum/basisordner -type d -exec chmod 755 {} +
Das ist robuster.
kannst Du mir den Grund dafür geben, aus welchem das robuster ist (oder sein soll)? Meines Wissens nach baut find für jeden Treffer mit "-exec" einen neuen Prozess auf, der das Resultat bearbeitet. xargs baut so lange Komandozeilen, wie die Shell vertragen kann. Gruss Dirk
|
comm_a_nder
Anmeldungsdatum: 5. Februar 2006
Beiträge: 2533
Wohnort: Dresden
|
Lux schrieb: Lunar schrieb: find /pfad/zum/basisordner -type f -exec chmod 644 {} +
find /pfad/zum/basisordner -type d -exec chmod 755 {} +
Das ist robuster.
kannst Du mir den Grund dafür geben, aus welchem das robuster ist (oder sein soll)? Meines Wissens nach baut find für jeden Treffer mit "-exec" einen neuen Prozess auf, der das Resultat bearbeitet
Der Blick in die Manpage liefert folgende Aussage:
-exec command {} +
This variant of the -exec option runs the specified command on the selected files, but the command line is built by appending each
selected file name at the end; the total number of invocations of the command will be much less than the number of matched files.
The command line is built in much the same way that xargs builds its command lines. Only one instance of ’{}’ is allowed within the
command. The command is executed in the starting directory. Es wird also mindestens ein Prozess weniger benötigt, nämlich der obsolete xargs Aufruf
|
Lux
Anmeldungsdatum: 10. November 2005
Beiträge: 5152
Wohnort: Grüt (Gossau ZH), Schweiz
|
comm_a_nder schrieb: Es wird also mindestens ein Prozess weniger benötigt, nämlich der obsolete xargs Aufruf
Danke! Ok, das ist ein guter Grund. Dass es robuster ist, sehe ich nicht. Gruss Dirk
|
Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
Lux schrieb: Lunar schrieb: find /pfad/zum/basisordner -type f -exec chmod 644 {} +
find /pfad/zum/basisordner -type d -exec chmod 755 {} +
Das ist robuster.
kannst Du mir den Grund dafür geben, aus welchem das robuster ist (oder sein soll)?
Es verarbeitet jeden gültigen Dateinamen, die Kombination mit xargs scheitert an Zeilenumbrüchen in Dateinamen. Ich gebe zu, dass das so gut wie nie vorkommt, aber man muss ja potentielle Fehler nicht provozieren, wenn sie bekannt sind. Die Lösung mit xargs sollte deswegen auch -print0 für find und -0 für xargs angeben, um dieses Problem zu vermeiden.
|
Lux
Anmeldungsdatum: 10. November 2005
Beiträge: 5152
Wohnort: Grüt (Gossau ZH), Schweiz
|
Lunar schrieb: Es verarbeitet jeden gültigen Dateinamen, die Kombination mit xargs scheitert an Zeilenumbrüchen in Dateinamen. Ich gebe zu, dass das so gut wie nie vorkommt, aber man muss ja potentielle Fehler nicht provozieren, wenn sie bekannt sind. Die Lösung mit xargs sollte deswegen auch -print0 für find und -0 für xargs angeben, um dieses Problem zu vermeiden.
ok. Danke Dir. Das ist in jedem Fall ein guter Grund. Gruss Dirk
|