Chmod
chmod (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich Dateiattribute verändern lassen. Zu den Attributen gehörten das Recht, die Datei zu Lesen (r wie read), sie zu verändern (w wie write) oder sie (als Programm) auszuführen (x wie execute).
Die Attributsänderungen lassen sich von dem Besitzer der Datei oder dem root-Benutzer durchführen. Die Attribute sind auf drei Ebenen einstellbar: Einmal für den Benutzer selbst, dann für alle Benutzer innerhalb einer Gruppe von Benutzern und schließlich für alle Benutzer.
Unter DOS gibt es mangels Mehrbenutzerfähigkeit ein solches Programm nicht. Das Werkzeug attrib gestattet es dem Benutzer lediglich, die Attribute Archiv, Versteckt, System und Schreibgeschützt zu manipulieren. Unter Windows-NT ab Version 4.0 steht u.a. das Werkzeug cacls.exe zur Manipulation der Datei-Zugriffsrechte zur Verfügung.
In vielen grafischen Dateimanagern oder FTP-Clients, zum Beispiel Konqueror/KDE, Nautilus/GNOME oder gftp, lassen sich die Dateiattribute auch über die rechte Maustaste (Datei-Eigenschaften) ändern.
Berechtigungsstruktur
Unix kennt drei "Anwenderarten" für eine Datei oder ein Verzeichnis. Das sind der Eigentümer, hier user genannt, obwohl owner gemeint ist, die Gruppe (group) und alle anderen Anwender (world). Die Berechtigung, die den drei Anwenderarten zugewiesen werden soll, wird meist als eine dreistellige Oktalzahl dargestellt. Dabei gilt:
- 0 : dem Benutzer ist keine Operation mit dem Objekt gestattet
- 1 : der Benutzer darf die Datei ausführen bzw. in das Verzeichnis wechseln
- 2 : der Benutzer darf in die Datei schreiben bzw. Dateien und Unterverzeichnisse im Verzeichnis erstellen und löschen
- 4 : der Benutzer darf aus der Datei lesen bzw. sich die Dateien im Verzeichnis anzeigen lassen
Durch die Addition der oben genannten Werte für jede der drei Stellen der Oktalzahl ergeben sich dann die üblichen Berechtigungszahlen. Die dreistellige Oktalzahl stellt hierbei jeweils die Berechtigung für eine der drei Anwenderarten da. So bedeutet ein chmod 764 datei:
- der Besitzer darf lesen (4), schreiben (2) und ausführen (1),
- die Gruppe darf lesen (4) und schreiben (2),
- die Anderen dürfen lesen (4)
Die Attribute können außerdem anstatt als Zahl auch als symbolische Zeichen angegeben werden: Dateieigentümer haben die Bezeichnung u. Gruppen die Bezeichnung g. Der Rest der Welt die Bezeichnung o. Read hat die Bezeichnung r. Write hat die Bezeichnung w. Execute hat die Bezeichnung x.
Wenn wir jetzt einer Datei alle Executerechte für alle Benutzer geben wollen, reicht ein chmod a+x datei.
Rechte-Tabelle
Zugriff | Eigentümer | Gruppe | Welt |
---|---|---|---|
lesen | 4 | 4 | 4 |
schreiben | 2 | 2 | 2 |
ausführen | 1 | 1 | 1 |
oder wie auch oft verwendet:
Rechte-Tabelle (weiteres Beispiel)
Zugriff | Lesen | Schreiben | Ausführen |
---|---|---|---|
Eigentümer | 4 | 2 | 1 |
Gruppe | 4 | 2 | 1 |
Welt | 4 | 2 | 1 |
Parameter
-R (rekursiv) die Zugriffsrechte aller Dateien in den Unterverzeichnissen werden ebenfalls geändert -v (verbose) zeigt alle verarbeiteten Dateien an -c (changes) wie verbose, gibt jedoch nur die Dateien aus, die wirklich geändert wurden, Dateien, die die zu setzenden Rechte schon hatten, werden also nicht angezeigt
--help (Hilfe) zeigt die Hilfe inklusive aller Parameter an
Sonderrechte
Als Besonderheiten sind das s-Recht und das t-Recht bzw. S-Recht und T-Recht unter Linux aufzuführen. Diese Berechtigungen kann nur der sogenannte „Superuser“ setzen.
SUID bzw. SGID
Das s-Recht beim Besitzer (SUID) bedeutet, dass der angemeldete Benutzer sich während des Ausführens der Datei bzw. Auflisten des Ordners die Rechte des Besitzers der Datei bzw. des Ordners leiht.
Das s-Recht bei der Gruppe (SGID) bedeutet, dass der angemeldete Benutzer sich während des Ausführens der Datei bzw. Auflisten des Ordners die Rechte der besitzenden Gruppe der Datei bzw. des Ordners leiht.
Weiter hat ein gesetztes s-Recht, auf einem Ordner, Auswirkungen auf das Anlegen von Dateien und Unterordnern. Wird in einem Ordner, mit gesetztem s-Recht, eine Datei angelegt, so erhält diese als Gruppe die Gruppe des Ordners.
Sticky-Bit
Das sogenannte Sticky-Bit (t-Recht) wird beim Rest der Welt eingesetzt. Es bewirkt bei ausführbaren Dateien, dass das Programm im Arbeitsspeicher geladen bleibt und nicht direkt aus dem Speicher gelöscht wird.
Das Sticky-Bit auf einem Ordner bewirkt, dass ein Benutzer in diesem Ordner Dateien erstellen kann und seine eigenen Dateien löschen und editieren kann, jedoch andere Dateien auch lesen kann.
Groß- und Kleinschreibung
Ein großes S bzw. großes T steht dafür, dass das Executable-Bit nicht gesetzt ist. Ein kleines s oder t bedeutet, dass das Executable-Bit gesetzt ist.
Sonderrechte-Tabelle
Rechte | Oktal |
---|---|
rwsr-xr-x | 4755 |
rwxr-sr-x | 2755 |
rwxr-xr-t | 1755 |
Weblinks
- POSIX-Spezifikation des chmod-Tools: [1]
- http://www.linux-user.de/ausgabe/2000/10/093-zubefehl/befehl9.html
- manpage zu chmod: [2]
- http://www.fibel.org/linux/lfo-0.6.0-1/lfo.html#SECTION001123000000000000000