
chmod (von englisch:change mode) ist ein Kommandozeilenprogramm unterUnix, mit dem sich die klassischenUnix-Dateirechte verändern lassen. Daschmod-Kommando gibt es bereits seit der ersten Version desAT&T-Unix (Anfang der 1970er Jahre).
Die Attributsänderungen lassen sich nur von dem Besitzer der Datei oder demroot-Benutzer durchführen.
Das Programm wird in derUnix-Shell wie folgt benutzt:
$ chmod [options]modefile1 …
Es sind zunächst Optionen möglich;options kann dabei-v für ausführliche Ausgaben (verbose) und-R fürrekursives Durchgehen allerUnterverzeichnisse sein.
mode steht für die auf die Datei oder Dateien anzuwendende Rechtemaske. Diese kann in einernumerischen Notation oder einersymbolischen Notation geschehen.
chmod ermöglicht eine Kurzschreibweise, um Dateirechte einfach zu kombinieren. Dabei stehtu für den Eigentümer (user),g für die Gruppe (group) undo für alle anderen Benutzer (other). Schließlich gibt es nocha, welches alle drei Benutzergruppen umschließt (all). Um zum Beispiel allen möglichen Benutzern die Ausführrechte einer Datei zu geben, reicht einchmod a+xdateiname.
DieseBenutzerklassen werden mit drei möglichenOperatoren 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 sindr,w,x,s undt entsprechend der klassischensymbolischen Notation. Zusätzlich gibt es noch das spezielle ZeichenX (special execute). Dabei handelt es sich nicht um ein Dateirecht, sondern um einen Ersatz fürx, 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 vonchmod -R a+rx passieren würde. MitX hingegen kann manchmod -R a+rX benutzen.
Die numerische Benutzung des chmod ist folgendermaßen aufgebaut:
chmod SUGO beispiel.txt
S steht dabei für das auch sogenannteSticky-Bit, es hat üblicherweise den Wert 0U … für den Benutzer (englischuser) oder auch Besitzer (und Eigentümer) der DateiG … für die Gruppe undO … für das englischeother(s), also alle anderen Benutzer
Die vieroktalen Ziffern nach dem Befehlchmod 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 |
DasSticky-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 stellen dasSUID/SGID-Bit ein Sicherheitsrisiko dar, da es den Kontext des Datei-Eigentümers bzw. der Gruppe statt den des Ausführenden setzt. Die ursprüngliche Bedeutung desSticky-Bits, ausführbare Dateien im Arbeitsspeicher zu halten, um einen Performanzgewinn zu erzeugen, ist kaum noch von Bedeutung.
Beispiel 1 $ chmod u=rw MyFileBeispiel 2 $ chmod g-rx MyFileBeispiel 3 $ chmod o+r MyFileBeispiel 4 $ chmod 0700 Beispiel.txtBeispiel 5 $ chmod g+w,o-x MyFile
Erklärung:

In vielen grafischenDateimanagern undFTP-Clients, zum BeispielKonqueror/KDE,Nautilus/GNOME, lassen sich die Dateirechte grafisch bearbeiten.
chmod(1): change the file modes – Open Group Base Specificationchmod(1): change file modes – OpenBSD General CommandsManualchmod(1): Dateimodusbits ändern – Debian GNU/Linux Ausführbare Programme oder Shell-BefehleHandbuchseite