(change file modes)
chmod ändert die Zugriffsrechte für Dateien.
Nur der Eigentümer der Datei oder der POSIX-Verwalter darf die Zugriffsrechte ändern. Das s-Bit für die Gruppe darf nur ein Benutzer setzen, dessen aktuelle Gruppennummer mit der Gruppennummer der Datei übereinstimmt, deren Zugriffsrechte verändert werden (siehe chgrp und newgrp).
Syntax
chmod [-R] modus datei ... |
(R - rekursiv)
Mit modus geben Sie an, wie Sie die Zugriffsrechte für die angegebenen Dateien ändern wollen. Sie können modus auf zwei Arten definieren:
Name der Datei, für die Sie die Zugriffsrechte definieren oder ändern wollen. datei kann auch ein Dateiverzeichnis sein. Pro Aufruf können Sie mehrere Namen angeben. Symbolische Angabe
wer Mit wer geben Sie an, für wen Sie die Zugriffsrechte ändern wollen.
wer nicht angegeben: Für wer gilt ugo, d.h. alle Benutzer. Die Zugriffsrechte für ugo werden mit Ausnahme der Bits der Schutzbit-Maske (siehe umask) gesetzt. darf Mit darf geben Sie an, ob Sie die angegebenen Zugriffsrechte erteilen, unverändert lassen oder entziehen wollen.
was Mit was geben Sie an, welche Zugriffsrechte Sie erteilen bzw. entziehen wollen.
was nicht angegeben: Dies ist nur sinnvoll in Kombination mit dem Gleichheitszeichen = ; dem betreffenden wer werden dann alle Zugriffsrechte entzogen. Wie oben angegeben, können Sie mehrere "wer-darf-was"-Angaben, getrennt durch Kommas, aneinanderreihen, z.B.
chmod arbeitet die Zeichenkette, die Sie für modus angeben, von links nach rechts ab. So erhält z.B. durch die Angabe a-w,u+w der Eigentümer Schreibrecht, während es allen anderen entzogen wird. Absolute AngabeEine absolute Angabe für modus ist eine drei- oder vierstellige Oktalzahl. Die zulässigen Oktalzahlen erhalten Sie, wenn Sie die untenstehenden oktalen Modi im Binärsystem mit dem bitweisen logischen ODER verknüpfen. Dasselbe Ergebnis erhalten Sie, wenn Sie die Modi (im Oktal- oder Dezimalsystem) addieren. Eine führende Null (weder s-Bit noch Sticky-Bit) können Sie weglassen. Die angegebenen Zugriffsrechte werden erteilt, alle anderen Zugriffsrechte werden entzogen.
Beispiel Wenn Sie für den Eigentümer das Lese-, Schreib- und Ausführrecht setzen wollen, und für Gruppe das Lese- und Ausführrecht, dann geben Sie für modus 750 an:
Für die Datei gelten dann die Zugriffsrechte rwx r-x ---. |
Das s-Bit
Ist für ein ausführbares Programm das s-Bit für den Eigentümer gesetzt, dann ist beim Aufruf des Programms die effektive Benutzernummer des zugehörigen Prozesses gleich der Benutzernummer des Eigentümers der Datei (und nicht gleich der Benutzenummer des Aufrufers). Das bedeutet, dass der Prozess unter der Benutzernummer des Programm-Eigentümers abläuft. Dadurch kann er auch auf Dateien zugreifen, für die der Programm-Aufrufer direkt kein Zugriffsrecht hat. Ist das s-Bit für die Gruppe gesetzt, dann ist die effektive Gruppennummer des Prozesses gleich der Gruppennummer des Programm-Eigentümers. Der Prozess läuft also unter der Gruppennummer des Programm-Eigentümers ab. Das s-Bit wirkt nur bei ausführbaren Binärdateien (ausführbaren Programmen), nicht aber bei Shell-Prozeduren. Für Dateien, die eine Shell-Prozedur enthalten, kann das Bei Dateiänderungen werden die s-Bits aus Sicherheitsgründen zurückgesetzt. Setzt der POSIX-Verwalter für ein Programm, das ihm gehört, das s-Bit, erlaubt er allen Benutzern, die das Programm aufrufen dürfen, alle Operationen, die er selbst mit Hilfe dieses Programms ausführen darf. Er darf das s-Bit also nur dann setzen, wenn sichergestellt ist, dass dadurch keine Sicherheitslücke entsteht, z.B. Daten gefährdet werden. Beispiel für die Anwendung des s-Bits Ein Beispiel für die Anwendung des s-Bits ist das Kommando mailx, das Nachrichten an den Benutzer USER1 in die Datei Die Datei gehört zur Gruppe
Somit könnte ein anderer Benutzer (USER2) keine Nachrichten in diese Datei schreiben. Da für das Kommando mailx jedoch das s-Bit für die Gruppe |
Das Sticky-Bit (t-Bit)
Nur der POSIX-Verwalter kann das Sticky-Bit (t-Bit) setzen. Versucht ein nichtprivilegierter Benutzer, das Sticky-Bit zu setzen, so wird dies ignoriert. Das Sticky-Bit wirkt nur bei Dateiverzeichnissen und ausführbaren Dateien. Für andere Dateien kann es zwar mit chmod gesetzt werden, es ist jedoch wirkungslos. Ist das Sticky-Bit bei ausführbaren Dateien gesetzt, kann beim Programmstart das Einlesen des Programms aus der Programmdatei und das Auslagern in den Swap-Bereich teilweise vermieden werden. Wenn ein Dateiverzeichnis schreibbar ist, aber das Sticky-Bit gesetzt hat, muss eine der folgenden Bedingungen erfüllt sein, um eine Datei unter diesem Dateiverzeichnis zu löschen, zu verschieben oder einen Verweis auf diese Datei zu erzeugen:
Bei der Ausgabe des Kommandos ls -l erscheint ein gesetztes Sticky-Bit an der letzten Stelle der Zugriffsrechte. Ist gleichzeitig das x-Bit für „andere Benutzer“ gesetzt, so wird |
Das l-Bit
Mit Hife der Funktion lockf() kann ein Programm eine Datei sperren, solange das Programm auf diese Datei zugreift. Ist für diese Datei das l-Bit gesetzt, bewirkt der Funktionsaufruf eine obligatorische Sperre (mandatory locking) der Datei (siehe lockf() [4]). |
Fehler
Sie haben für chmod einen unzulässigen Modus angegeben.
|
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos chmod: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten). LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. |
Beispiel
Die folgenden Beispiele beziehen sich alle auf eine Datei mit den Zugriffsrechten rw- --- ---. Die ersten beiden Spalten der Tabelle enthalten Angaben für modus, die letzte Spalte enthält das Ergebnis des jeweiligen chmod-Aufrufs.
Das Sticky-Bit (letztes Beispiel) kann nur der POSIX-Verwalter setzen. Versucht ein nichtprivilegierter Benutzer, das Sticky-Bit zu setzen, so wird dies ignoriert. |
Siehe auch
chgrp, ls, newgrp, umask chmod(), chown() [4] |