Page 1 of 1
chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 21:23
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
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 21:27
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
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 21:28
by ffl
Das wär was für die FAQ oder? ;-)
Muss ich mir notieren...
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 21:34
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.
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 21:48
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.
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 22:14
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?
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-09 22:21
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.
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-10 08:45
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.
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-10 12:30
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?
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-10 12:54
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.
Re: chmod 644 und 755 in einem rutsch
Posted: 2004-09-10 21:38
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 ;)