CHMOD - Rechte aller Dateien in einem Ordner ändern

Snow

Snow

Aktives Mitglied
Thread Starter
Dabei seit
24.03.2003
Beiträge
262
Reaktionspunkte
2
Hallo Leute,

mit dem Terminal bin ich ja nicht unbedingt vertraut. Deshalb meine Frage an euch: Kann ich die Rechte an allen, in einem Ordner enthaltenen Dateien auf einen Rutsch ändern?

Zunächst dachte ich, dass 'chmod -R' dafür zuständig wäre - aber anscheinend werden da nur die Rechte der enthaltenen Ordner entsprechend angepasst. Die Dateien bleiben außen vor.

Ich bitte um Erleuchtung.
 
Hi Snow,

das macht es normalerweise auch. Welche Parameter willst du denn angeben? Verwendest du dafür Oktalzahlen? Ein sudo davor? Z. B.:

Code:
sudo chmod -R 777 Pfad/zum/Ordner

Ansonsten auch:

Code:
man chmod
 
chmod, nicht CHMOD! Das ist kein DOS-Befehl :D
chmod -R sollte es eigentlich tun, so steht's schließlich in chmod(1). Hast du vielleicht im Moment nicht die Rechte, um die Dateien zu chmod-en?
 
Snow schrieb:
Hallo Leute,

mit dem Terminal bin ich ja nicht unbedingt vertraut. Deshalb meine Frage an euch: Kann ich die Rechte an allen, in einem Ordner enthaltenen Dateien auf einen Rutsch ändern?

Zunächst dachte ich, dass 'chmod -R' dafür zuständig wäre - aber anscheinend werden da nur die Rechte der enthaltenen Ordner entsprechend angepasst. Die Dateien bleiben außen vor.

Ich bitte um Erleuchtung.
Probier' doch mal BatChmod
Kostet nix und ändert alles. ;) :D

Gruß
agro
 
Das -R ist für Rekursiv und bedeutet das auch unterhalb der Ebene auf der man den Befehl ausführen möchte, die Rechte geändert werden.
Wenn man nur Dateien und Ordner in einem Ordner verändern möchte dann lieber mit "chmod *" also mit dem Wildcard *. Da hier nur Dateien betroffen werden sollen, ist das * jedenfalls besser. Mit -R erwischt man nämlich auch die Dateien die in einem im Ordner enthaltenen Ordner enthalten sind.(was für ein satz. :D)

- björn
 
Ein Thirdparty-Tool nützt mir nichts. Ich brauche es, damit ich es in einem AppleScript verwenden kann.

Bisher hatte ich auch gedacht, dass chmod -R die Rechte aller Dateien auch gleich mitändern würde. Vielleicht gilt das aber nur für Dateien, die nachträglich in dieses Verzeichnis gelegt werden.

Auf jeden Fall ändern sich die Rechte der Dateien nicht, wenn sie bereits im Ordner sind.
Ich habe es eben nochmal getestet. Die Rechte des Ordners werden verändert, die der Dateien bleiben so wie vorher.
 
Snow, hast du denn mal ein "sudo" vorneweg angefügt, wie ich es oben im Beispiel beschrieben habe?
 
Snow schrieb:
Ein Thirdparty-Tool nützt mir nichts. Ich brauche es, damit ich es in einem AppleScript verwenden kann.

Bisher hatte ich auch gedacht, dass chmod -R die Rechte aller Dateien auch gleich mitändern würde. Vielleicht gilt das aber nur für Dateien, die nachträglich in dieses Verzeichnis gelegt werden.

Auf jeden Fall ändern sich die Rechte der Dateien nicht, wenn sie bereits im Ordner sind.
Ich habe es eben nochmal getestet. Die Rechte des Ordners werden verändert, die der Dateien bleiben so wie vorher.
Klar ... Das -R steht für Rekursiv das heißt in den Ordnern und Ordnern die sich darunter befinden...
Les mal bitte meinen Post.

- björn
 
Snow schrieb:
Bisher hatte ich auch gedacht, dass chmod -R die Rechte aller Dateien auch gleich mitändern würde. Vielleicht gilt das aber nur für Dateien, die nachträglich in dieses Verzeichnis gelegt werden.

Bitte keine Chaos-Theorien. :) Das ist sicherlich nicht so.

Vielleicht postest du mal EXAKT den Befehl, der nicht funktioniert, und hängst ein ls -la (oder ls -laR) an - zumindest in Ausschnitten.

Anbei mal ein paar Hint:

1. User dürfen logischerweise nur Rechte von Dateien ändern, die ihnen auch gehören - wäre ja sonst ein toller Hack. :)


2. Verwende "-v", wenn du Probleme hast. Du bekommst dann eine Ausgabe, was geändert worden ist.

3. Wenn dir Oktalzahlen zu schwierig sind, dann verwende Kürzel:
a) ändern für wen? u=user (also Eigentümer), g=group, o=others
b) Recht setzen (+) oder entziehen (-) ?
c) welches recht? r=read, w=write, x=eXecute (Für Ordner: execute= reingucken und auflisten)

Also:
chmod u+x = Erlaube(+) dem Eigentümer(u) das ausführen(x).
chmod ugo+x = Erlaube(+) jedem (ugo) das ausführen(x).
chmod o-r = Verbiete(-) allen anderen (o) das lesen(r).

4.
Schwierig ist der Umgang mit "-R" machmal deswegen, weil man für Dateien und Ordner völlig verschiedene Rechte haben will, -R aber keinen Unterschied macht. Dann helfen solche Konstrukte:

find ./ -type f -iname "*.pl" -exec chmod ugo+rx "{}" \; -print

Heisst:
Finde (find) im aktuellen Ordner (./) alles, was eine Datei ist (-f = file, also keine Ordner, Links, Devices,...) und deren Name auf .pl endet (-name "*.pl"), ohne auf Groß-Kleinschreibung zu achten (-iname statt -name).
Für alle gefundenen Dateien ("{}") führe aus: (-exec) chmod ugo+x. Der exec-Befehl hat am Ende ein \;, alles folgende sind dann wieder Parameter für find: -print gibt die geänderten Files aus.

Praktisch sind dabei Begrenzer für die Ordnertiefe:
-mindepth 1 -maxdepth 1

find ./ -type f -iname "*.pl" -mindepth 1 -maxdepth 1 -exec 755 "{}" \; -print

...würde im aktuellen Ordner alle perl-Scripte auf den üblichen Wert setzen, aber nicht in Unterordner reinsteigen, und es würde nicht an Ordnern(!) rummfummeln, die zufälligerweise "irgendwas.pl" heissen.



Alles weitere: man chmod. Read That FIne Manual.

Gruß, Ratti

Disclaimer: Alles ist freihändig eingetippt. Rechtschreib- und Denkfehler gelten als Lernhilfe. :)
 
Hallo Leute,

vielen Dank für die Antworten. Das Ganze war ein Fehlalarm. Nach genaueren Tests stellte sich heraus, dass mein Skript doch funktioniert.

Ich hatte den Befehl in folgender Form verwendet:

do shell script "chmod -R " & Rechte & " " & derPfad

Wobei Rechte und derPfad Variablen sind, die jeweils die gewünschten Zugriffsrechte in der Form 777 und die Pfadangabe zum Ordner enthalten.

Ein Gutes hat die ganze Sache: Ich habe in diesem Thread viel dazu gelernt. Nochmals recht herzlichen Dank.
 
Zurück
Oben Unten