CHMOD - Rechte aller Dateien in einem Ordner ändern

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von Snow, 26.03.2005.

  1. Snow

    Snow Thread Starter MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    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.
     
  2. dylan

    dylan MacUser Mitglied

    Beiträge:
    6.175
    Zustimmungen:
    1
    MacUser seit:
    18.12.2002
    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
     
  3. Saski

    Saski MacUser Mitglied

    Beiträge:
    650
    Zustimmungen:
    0
    MacUser seit:
    06.02.2005
    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?
     
  4. agro

    agro MacUser Mitglied

    Beiträge:
    609
    Zustimmungen:
    2
    MacUser seit:
    16.12.2004
    Probier' doch mal BatChmod
    Kostet nix und ändert alles. ;) :D

    Gruß
    agro
     
  5. [TB]Lucky

    [TB]Lucky MacUser Mitglied

    Beiträge:
    769
    Zustimmungen:
    0
    MacUser seit:
    17.11.2003
    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
     
  6. Snow

    Snow Thread Starter MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    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.
     
  7. dylan

    dylan MacUser Mitglied

    Beiträge:
    6.175
    Zustimmungen:
    1
    MacUser seit:
    18.12.2002
    Snow, hast du denn mal ein "sudo" vorneweg angefügt, wie ich es oben im Beispiel beschrieben habe?
     
  8. [TB]Lucky

    [TB]Lucky MacUser Mitglied

    Beiträge:
    769
    Zustimmungen:
    0
    MacUser seit:
    17.11.2003
    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
     
  9. ratti

    ratti MacUser Mitglied

    Beiträge:
    1.515
    Zustimmungen:
    56
    MacUser seit:
    09.05.2004
    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. :)
     
  10. Snow

    Snow Thread Starter MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    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.
     
Die Seite wird geladen...

Diese Seite empfehlen