L i n u x    B e f e h l    chmod

Kommando chmod ändert Zugriffsmerkmale von Dateien, Verzeichnissen (change files mode or Access List Control).

ANLASS:
Wenn ein Skript geschrieben wird, ist die Datei noch nicht als durchführbar markiert. Die entsprechenden Bits (in der Konfiguration der Zugriffsmerkmale) sind nicht (korrekt) gesetzt.

LÖSUNG:
Der Befehl chmod ermöglicht, dieses Merkmal - sowie alle sonstigen (nach dem Unix-Schema verwalteten) Zugriffsrechte - zu handhaben. (Beachte: Nur der Eigentümer oder der Systemen-Administrator kann Zugriffsrechte ändern)

SYNTAX: chmod 755 File_Name

  1. Befehl-Version 1

    Die erste Befehl-Version schreibt die Modi als eine absolute Zahl:

    Ziffer 1 Der Eigentümer hat folgende Zugriffsrechte

    07=111b
    (Read=1b, Write=1b, Executable=1b)

    Ziffer 2 Benutzer in derselben Gruppe wie der Eigentümer haben folgende Zugriffsrechte

    05=101b
    (Read=1b, Write=0b, Executable=1b)

    Ziffer 3 Alle anderen Benutzer haben folgende Zugriffsrechte

    05=101b
    (Read=1b, Write=0b, Executable=1b)

    Tab. Erläuterung der numerischen Syntax von chmod

  2. Befehl-Version 2

    Eine weitere Möglichkeit ist die symbolische Darstellung der Modi. Letztere folgt einer ausführlichen Syntax - was auch heißt, dass es meist mehrere Möglichkeiten gibt, um ein Ergebnis zu bewirken.

    SYNTAX: chmod u=rwx,go=u-w File_Name

    Die zweite Befehl-Version ist eine Möglichkeit, die erste Befehl-Version anders aber gleichwertig zu formulieren:

    uDer Eigentümer
    gBenutzer in derselben Gruppe wie der Eigentümer haben folgende Zugriffsrechte
    oAlle anderen Benutzer haben folgende Zugriffsrechte
    rLese-Rechte
    wSchreib-Rechte
    xDurchführbarkeit-Rechte
    Tab. Symbolische Syntax von chmod

Rekursiver Modus

Manchmal ist es erforderlich, Rechte rekursiv (für alle Objekte innerhalb eines Verzeichnisses) zu vergeben. Dafür stellt chmod die Option R bereit. Sie unterscheidet aber nicht zwischen Datei und Verzeichnis (Das Löschen des Durchführbarkeit-Bits eines Verzeichnisses bewirkt, dass sein Inhalt unerreichbar wird).
Die Standardlösung zu diesem Problem besteht - wie oft in der Unix-Welt - in der Verkettung mehrerer Befehle: Dem Befehl chmod wird der Befehl find vorangestellt, der geeignete Zielobjekte selektiert und weiterleitet. Um z.B. allen Dateien (nicht aber den Verzeichnissen) innerhalb eines Verzeichnisses die Durchführungsrechte zu entnehmen, kann man folgenden Befehl eintippen:

find . -type f -print0 | xargs -0 chmod 644 (siehe auch z.B. Lars Schenks Tipps)

Beachte:
Der Befehl find ermöglicht über Erkennungsmuster eine sehr feine Differenzierung der Objekte, die an den nächsten Befehl weitergeleitet werden - siehe auch die Manpage.