ubuntuusers.de

chmod 755 und 644...

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

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 Team-Icon

Avatar von 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??

1
2
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:

1
2
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 Team-Icon

Avatar von 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

Avatar von 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 Team-Icon

Avatar von 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 Team-Icon

Avatar von 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

Antworten |