chmod 644 und 755 in einem rutsch

Bash, Shell, PHP, Python, Perl, CGI
3dsoft
Posts: 14
Joined: 2003-07-03 14:28

chmod 644 und 755 in einem rutsch

Post by 3dsoft »

hallo,

ich habe viele files und folders und subfiles bzw. subfolders auf meinem webserver root verzeichniss.

ich möchte alle files und subfiles die rechte 644 geben und ich möchte allen folders und subfolders die rechte 755 geben.

Jetzt meine frage, wie mache ich es in einem rutsch, d.h mit maximal 2 befehlen?

wenn ich z.B. "chmod -R 755 *" eingebe, dann haben logischerweise die files auch die rechte 755, was ich aber nicht will.

weiss jemand wie ich das hinkriege ohne jeden file bzw folder einzeln zu bearbeiten?

danke
monte
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: chmod 644 und 755 in einem rutsch

Post by captaincrunch »

Code: Select all

find /wo/du/es/brauchst -type f | xargs chmod -R 644
find /wo/du/es/brauchst -type d | xargs chmod -R 755
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
ffl
Userprojekt
Userprojekt
Posts: 269
Joined: 2002-10-23 08:28
Location: Karlsruhe

Re: chmod 644 und 755 in einem rutsch

Post by ffl »

Das wär was für die FAQ oder? ;-)
Muss ich mir notieren...
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: chmod 644 und 755 in einem rutsch

Post by oxygen »

CaptainCrunch wrote:

Code: Select all

find /wo/du/es/brauchst -type f | xargs chmod -R 644
find /wo/du/es/brauchst -type d | xargs chmod -R 755
Eh, also die -R's sind zuviel ;) Kleine Anmerkung noch: Ich wurde von kurzem belehrt das find + xargs wohl ineffektiv ist, auch wenn ich es auch so machen würde. -exec soll wohl besser sein.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: chmod 644 und 755 in einem rutsch

Post by captaincrunch »

Eh, also die -R's sind zuviel
Stimmt, sollte man in dem Fall weglassen, hier ist es Schwachsinn, und führt zu falschen Ergebnissen. Sollte also so aussehen:

Code: Select all

find /wo/du/es/brauchst -type f | xargs chmod 644
find /wo/du/es/brauchst -type d | xargs chmod 755
Kleine Anmerkung noch: Ich wurde von kurzem belehrt das find + xargs wohl ineffektiv ist, auch wenn ich es auch so machen würde. -exec soll wohl besser sein.
Wer sagt denn sowas? Versuch mal, eine Aktion auf eine find-Rückgabe von mehreren tausend Files anzuwenden; es wird nicht klappen. xargs hingegen bereitet keinerlei Probleme. Die Quelle für diese Aussage würde mich aber mal brennend interessieren.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
3dsoft
Posts: 14
Joined: 2003-07-03 14:28

Re: chmod 644 und 755 in einem rutsch

Post by 3dsoft »

danke für die schnelle antwort.

für einige dateien kommt diese meldung

Code: Select all

chmod: failed to get attributes of `own': No such file or directory
warum sagt er mir dass diese datei nicht existiert?
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: chmod 644 und 755 in einem rutsch

Post by Roger Wilco »

CaptainCrunch wrote:
Kleine Anmerkung noch: Ich wurde von kurzem belehrt das find + xargs wohl ineffektiv ist, auch wenn ich es auch so machen würde. -exec soll wohl besser sein.
Wer sagt denn sowas? Versuch mal, eine Aktion auf eine find-Rückgabe von mehreren tausend Files anzuwenden; es wird nicht klappen. xargs hingegen bereitet keinerlei Probleme. Die Quelle für diese Aussage würde mich aber mal brennend interessieren.
Das war (denke ich) so gemeint:

Code: Select all

find /dir -type f -exec chmod 644 {} ;
find /dir -type d -exec chmod 755 {} ;
Das geht völlig problemlos und macht im Endeffekt auch nichts anderes als die Version mit xargs.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: chmod 644 und 755 in einem rutsch

Post by captaincrunch »

Das geht völlig problemlos und macht im Endeffekt auch nichts anderes als die Version mit xargs.
Wie gesagt: probier die -exec-Variante mal bei mehreren tausend Files aus.
warum sagt er mir dass diese datei nicht existiert?
Vermutlich weil der Dateiname ein oder mehrere Leerzeichen enthält.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: chmod 644 und 755 in einem rutsch

Post by Roger Wilco »

CaptainCrunch wrote:
Das geht völlig problemlos und macht im Endeffekt auch nichts anderes als die Version mit xargs.
Wie gesagt: probier die -exec-Variante mal bei mehreren tausend Files aus.
Kannst du bei Gelegenheit bitte mal kurz erklären wieso das der Fall ist? Bei find wird das Kommando bei -exec für jede Datei ausgeführt, auf welche die Kriterien passen. {} wird dabei durch den aktuellen Dateinamen ersetzt. Bei xargs ist es doch ähnlich. Da wird eben zuerst die Dateiliste erstellt und diese danach durchgegangen und das Kommando, welches xargs übergeben wurde, ausgeführt. Oder hab ich einen kapitalen Denkfehler?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: chmod 644 und 755 in einem rutsch

Post by captaincrunch »

Bei find wird das Kommando bei -exec für jede Datei ausgeführt, auf welche die Kriterien passen. {} wird dabei durch den aktuellen Dateinamen ersetzt.
OK, exakt, den Punkt hatte ich nicht mehr richtig im Kopf. -exec klappt zwar auch, ist aber bei vielen Files erheblich langsamer und vor allem ressourcenhungriger:

Der Vorteil von xargs besteht darin, dass hier eine "einzelne" (Ausnahme zur Regel siehe *) Kommandozeile erzeugt wird. Dadurch muss das System nicht für jedes File einen exec()-Syscall absetzen, sondern kommt (günstigstenfalls) mit einem solchen Call aus.

Ein recht interessanter (wenn auch älterer) Link dazu findet sich unter http://freebooks.by.ru/view/RedHatLinux ... l6u205.htm (doert mal nach "xargs" suchen).

* Die Einschränkung dabei ist eine maximale Länge von Kommandozeilen des jeweiligen Systems, die aber von xargs automatisch gehandhabt wird. Der Fakt, dass hier erheblich weniger Syscalls benötigt werden bleibt aber bestehen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: chmod 644 und 755 in einem rutsch

Post by oxygen »

CaptainCrunch wrote:
Bei find wird das Kommando bei -exec für jede Datei ausgeführt, auf welche die Kriterien passen. {} wird dabei durch den aktuellen Dateinamen ersetzt.
OK, exakt, den Punkt hatte ich nicht mehr richtig im Kopf. -exec klappt zwar auch, ist aber bei vielen Files erheblich langsamer und vor allem ressourcenhungriger:

Der Vorteil von xargs besteht darin, dass hier eine "einzelne" (Ausnahme zur Regel siehe *) Kommandozeile erzeugt wird. Dadurch muss das System nicht für jedes File einen exec()-Syscall absetzen, sondern kommt (günstigstenfalls) mit einem solchen Call aus.

Ein recht interessanter (wenn auch älterer) Link dazu findet sich unter http://freebooks.by.ru/view/RedHatLinux ... l6u205.htm (doert mal nach "xargs" suchen).

* Die Einschränkung dabei ist eine maximale Länge von Kommandozeilen des jeweiligen Systems, die aber von xargs automatisch gehandhabt wird. Der Fakt, dass hier erheblich weniger Syscalls benötigt werden bleibt aber bestehen.
Ah danke. Ich habe mir schon gedacht, dass daran etwas faul ist. Den Spezialisten werde ich die Tage mal zurecht stutzen ;)