chmod

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Beispiele von chmod

chmod (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix-Dateirechte verändern lassen. Das chmod-Kommando gibt es bereits seit der ersten Version des AT&T-Unix (Anfang der 1970er Jahre).

Die Attributsänderungen lassen sich nur von dem Besitzer der Datei oder dem root-Benutzer durchführen.

Benutzung[Bearbeiten]

Das Programm wird in der Unix-Shell wie folgt benutzt:

$ chmod [options] mode file1 ...

Es sind zunächst Optionen möglich; options kann dabei -v für ausführliche Ausgaben (verbose) und -R für rekursives Durchgehen aller Unterverzeichnisse sein.

mode steht für die auf die Datei oder Dateien anzuwendende Rechtemaske. Diese kann in einer numerischen Notation oder einer symbolischen Notation geschehen.

Symbolische Notation[Bearbeiten]

chmod ermöglicht eine Kurzschreibweise, um Dateirechte einfach zu kombinieren. Dabei steht u für den Eigentümer (user), g für die Gruppe (group) und o für alle anderen Benutzer (other). Schließlich gibt es noch a, welches alle drei Benutzergruppen umschließt (all). Um zum Beispiel allen möglichen Benutzern die Ausführrechte einer Datei zu geben, reicht ein chmod a+x dateiname.

Diese Benutzerklassen werden mit drei möglichen Operatoren mit den Dateirechten verknüpft:

  • + fügt die entsprechenden Dateirechte den entsprechenden Benutzerklassen hinzu (überschreibt nur die betroffenen Rechte)
  • - entzieht den entsprechenden Benutzerklassen die entsprechenden (und betroffenen) Dateirechte
  • = setzt für die Benutzerklassen die entsprechenden Dateirechte neu, ungeachtet ihrer vorherigen Rechte am Objekt (override).

Anschließend werden die entsprechenden Dateirechte angegeben. Dies sind r, w, x, s und t entsprechend der klassischen symbolischen Notation. Zusätzlich gibt es noch das spezielle Zeichen X (special execute). Dabei handelt es sich nicht um ein Dateirecht, sondern um einen Ersatz für x, welches bei Verzeichnissen das Ausführ-Recht setzt (ungeachtet, ob sie es vorher gesetzt hatten) und nur bei den Dateien ein Ausführ-Recht setzt, die bereits ein Ausführ-Recht bei mindestens einer Benutzerklasse gesetzt haben. Es ist daher nur dann sinnvoll, wenn es mit + und der -R-Option genutzt wird, um den entsprechenden Benutzerklassen Zugriff zu einem Verzeichnisbaum zu geben, ohne normalen Dateien (keinen Programmen) das Ausführ-Bit zu setzen, was normalerweise beim Aufruf von chmod -R a+rx passieren würde. Mit X hingegen kann man chmod -R a+rX benutzen.

Numerisch[Bearbeiten]

Die numerische Benutzung des chmod ist folgendermaßen aufgebaut

chmod SUGO beispiel.txt

S ist das "sticky bit", i.d.R. 0
U steht für den Benutzer/Eigentümer der Datei
G steht für die Gruppe und
O steht für other, also alle anderen Benutzer

Die vier oktalen Ziffern nach dem Befehl chmod tragen für die Stellen von S, U, G oder O je einen Wert von 0 bis 7. Bei U, G und O steht 4 für lesen, 2 für schreiben und 1 für ausführen.

# Berechtigung rwx
7 Voll 111
6 Lesen und Schreiben 110
5 Lesen und Ausführen 101
4 Nur Lesen 100
3 Schreiben und Ausführen 011
2 Nur Schreiben 010
1 Nur Ausführen 001
0 Keine 000

Das "sticky bit" ergibt ein unterschiedliches Verhalten bei Verzeichnissen und Dateien. Bei Verzeichnissen erzeugt in den meisten modernen UNIX-Implementierungen ein gesetztes sticky-Bit die Eigenschaft, dass (bei entsprechenden übrigen Rechten) jeder Benutzer Dateien in das Verzeichnis schreiben darf, aber nur seine eigenen bearbeiten oder löschen kann. Ebenfalls möglich sind die Werte 4 und 2, die als Dateieigentümer den Verzeichniseigentümer bzw. die Verzeichnisgruppe für Dateien eintragen, so dass z.B. Benutzer unterschiedlicher primärer Gruppenzugehörigkeit sich leicht die Dateien in einem Verzeichnis teilen können.

# Berechtigung
4 SUID (Setze User des Verzeichnisses für Dateien)
2 SGID (Setze Gruppe des Verzeichnisses für Dateien)
1 Nur Eigentümer (und Superuser) darf Dateien löschen und umbenennen
0 Keine

Insbesondere für ausführbare Dateien stellt das "sticky bit" ein Sicherheitsrisiko dar, da es den Kontext des Datei-Eigentümers statt den des Ausführenden setzt. Die ursprüngliche Bedeutung, ausführbare Dateien im Arbeitsspeicher zu halten, um einen Performanzgewinn zu erzeugen, ist kaum noch von Bedeutung.

Beispiel[Bearbeiten]

$ chmod u=rw MyFile
$ chmod g-rx MyFile
$ chmod o+r  MyFile
$ chmod 0700 Beispiel.txt

Erklärung:

  1. setzt die Rechte der Datei „MyFile“ des Besitzers (der Datei) auf Lesen (r) und Schreiben (w), löscht dabei das Ausführrecht, weil nicht gesetzt,
  2. entzieht der Gruppe das Recht auf Lesen (r) und Ausführen (x), berührt aber nicht das Schreibrecht,
  3. fügt für alle Anderen das Recht auf Lesen (r) hinzu (falls noch nicht vorhanden).
  4. Bei dem numerischen Verfahren werden allen bis auf den Eigentümer der Datei alle Rechte entzogen, der Eigentümer kann die Datei jedoch lesen (4), beschreiben (2) und ausführen (1).

Grafische Alternativen[Bearbeiten]

Grafisches „chmod“ in Konqueror

In vielen grafischen Dateimanagern und FTP-Clients, zum Beispiel Konqueror/KDE, Nautilus/GNOME, lassen sich die Dateirechte grafisch bearbeiten.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]