Ratgeber · 6 Min Lesezeit
Oktal im Unix-Alltag: chmod, umask und Dateirechte
Warum chmod 755 keine Geheimsprache ist, sondern eine kompakte Oktal-Notation für 9 Permission-Bits. Mit Tabellen und typischen Praxisbeispielen.
Wer mit Linux, macOS oder einem anderen Unix-System arbeitet, stößt früher oder später auf Befehle wie chmod 755 script.sh. Drei Ziffern, ein Sinn. Hinter dieser scheinbar willkürlichen Zahl steckt eine elegante Oktal-Notation, die seit den 1970er Jahren unverändert funktioniert. Wer das System einmal verstanden hat, vergisst es nie wieder.
Drei Rechte, drei Empfänger
Jede Datei und jedes Verzeichnis hat in Unix drei mögliche Rechte:
- r (read): lesen
- w (write): schreiben
- x (execute): ausführen
Und drei Gruppen, denen diese Rechte erteilt werden:
- User: der Eigentümer der Datei
- Group: die Gruppe der Datei
- Other: alle anderen
Damit gibt es 3 × 3 = 9 unabhängige Bits, die pro Datei gespeichert werden. Wenn ls -l etwas wie -rwxr-xr-- zeigt, sind das genau diese 9 Bits, gruppiert:
- rwx r-x r--
| User Group Other
Dateityp (- = Datei, d = Verzeichnis, l = Link)
Vom Bitmuster zur Oktalzahl
Jede Dreiergruppe ist ein 3-Bit-Wert. Drei Bits passen genau in eine Oktal-Ziffer (0 bis 7):
| Binär | Oktal | Rechte |
|---|---|---|
| 000 | 0 | --- (keine) |
| 001 | 1 | —x (nur ausführen) |
| 010 | 2 | -w- (nur schreiben) |
| 011 | 3 | -wx (schreiben, ausführen) |
| 100 | 4 | r— (nur lesen) |
| 101 | 5 | r-x (lesen, ausführen) |
| 110 | 6 | rw- (lesen, schreiben) |
| 111 | 7 | rwx (alle) |
Mit dieser Tabelle löst sich jedes chmod-Kommando in Klartext auf:
chmod 755 datei→rwxr-xr-x: Eigentümer alles, andere lesen+ausführenchmod 644 datei→rw-r--r--: Eigentümer lesen+schreiben, andere nur lesenchmod 600 datei→rw-------: nur Eigentümer lesen+schreiben (z. B. SSH-Privatkey)chmod 700 ordner→rwx------: nur Eigentümer Zugriff auf den Ordnerchmod 777 datei→rwxrwxrwx: jeder darf alles (fast immer schlechte Idee)
Warum 4-2-1?
Die Wahl 4, 2, 1 für Read, Write, Execute ist nicht zufällig. Es sind die drei höchsten Stellen einer 3-Bit-Zahl. Wer die Rechte addiert, bekommt automatisch die richtige Oktal-Ziffer:
- Lesen (4) + Schreiben (2) = 6 (rw-)
- Lesen (4) + Ausführen (1) = 5 (r-x)
- Lesen (4) + Schreiben (2) + Ausführen (1) = 7 (rwx)
Das ist ein perfektes Beispiel dafür, wie eine binäre Repräsentation eine intuitive Notation ermöglicht.
Drei Sonderbits
Über die neun Standard-Bits hinaus gibt es drei Sonderbits, die als vierte Oktal-Stelle vorne dran kommen:
- Setuid (4000): Das Programm läuft mit den Rechten seines Eigentümers, nicht des Aufrufenden. Klassisch bei
passwd, weil das Programm in/etc/shadowschreiben können muss. - Setgid (2000): Wie Setuid, aber für die Gruppe. Bei Verzeichnissen sorgt es dafür, dass neu angelegte Dateien die Gruppe des Ordners erben.
- Sticky Bit (1000): Bei einem Verzeichnis dürfen Dateien nur vom Eigentümer (oder root) gelöscht werden, auch wenn andere Schreibrechte haben. Auf
/tmpstandardmäßig gesetzt.
Beispiel: chmod 4755 binary setzt Setuid plus rwxr-xr-x. Man sieht es in ls -l als kleines s statt x in der User-Ausführungsstelle: -rwsr-xr-x.
umask: Standardrechte für neue Dateien
Was passiert, wenn ein Programm eine neue Datei anlegt? Die maximalen Rechte sind 666 für Dateien und 777 für Verzeichnisse. Die tatsächlich gesetzten Rechte ergeben sich aus diesem Maximum minus der umask, einer prozessweiten Einstellung.
Übliche umask-Werte:
022(gängig): neue Dateien644, neue Verzeichnisse755077(sicherheitsbewusst): neue Dateien600, neue Verzeichnisse700002(laxer, für Team-Setups): Gruppen-Schreibrechte erlaubt
Die umask wird mit umask 077 gesetzt und ist meistens in ~/.bashrc oder /etc/profile konfiguriert.
chmod mit symbolischer Notation
Neben den Oktalzahlen erlaubt chmod auch eine symbolische Form, die für gezielte Änderungen praktisch ist:
chmod u+x script.sh # Eigentümer: x dazu
chmod go-w datei # Group + Other: w weg
chmod a=r index.html # All: nur lesen
chmod ug=rw,o= datei # User + Group: rw, Other: nichts
Vorteil: man muss nicht die vollständigen Rechte kennen, sondern nur die Änderung. Nachteil: weniger kompakt als die Oktal-Form. In Skripten ist Oktal robuster, weil es die Endrechte unabhängig vom Vor-Zustand setzt.
Häufige Praxisfälle
- Shell-Skript ausführbar machen:
chmod +x skript.sh - SSH-Privatkey absichern:
chmod 600 ~/.ssh/id_rsa(sshd ignoriert sonst den Key) - Webserver-Dokumente lesbar machen:
chmod 644 *.html - Verzeichnis betretbar machen:
chmod 755 ordner(x am Verzeichnis ist Eintrittsrecht, nicht Ausführen) - Schreibgeschützt machen:
chmod 444 wichtig.conf
ACLs: erweiterte Rechte
Die klassische Unix-Rechte-Verwaltung reicht für viele, aber nicht alle Fälle. Wer feinere Kontrolle braucht (etwa unterschiedliche Rechte für mehrere Gruppen), nutzt POSIX ACLs. Mit setfacl und getfacl lassen sich pro-User- und pro-Gruppe-Rechte hinzufügen, die über das rwxrwxrwx-Raster hinausgehen. Allerdings ist das deutlich komplexer und auf manchen Dateisystemen muss man ACL-Unterstützung erst aktivieren.
Werkzeuge
Wer schnell prüfen will, welche Bitmuster hinter einer Oktal-Permission stecken, kann sie in unserem Oktal-zu-Binär-Konverter eingeben. Aus 755 wird 111101101, also rwxr-xr-x. Umgekehrt geht es genauso: das gewünschte 9-Bit-Muster in Binär-zu-Dezimal (Basis 8 als Zielbasis) gibt die passende Oktal-Form.
Verwandte Themen
Zum technischen Hintergrund: Oktal zu Binär und unser Artikel zu Hexadezimal, das im Datei-System-Kontext für Inode-Adressen genutzt wird.