Unter Unix-Dateirechten versteht man bei Unix-Derivaten wie Linux und Mac OS X eine der ersten Implementierung von Dateiberechtigungen, die es bereits in der ersten Version Anfang der 1970er Jahre des AT&T-Unix gab. Diese Dateirechte zeichnen sich durch eine einfache Struktur aus, die einerseits intuitiv von Menschen verwendet werden kann und andererseits keine hohen Ansprüche an Computer stellt. Trotzdem lassen sich mit diesen Dateirechten selbst komplexe Alltagsprobleme in einem Mehrbenutzerumfeld lösen.
Grundlagen
Benutzerklassen
Auf Unix-Dateisystemen besitzt jeder Inode, d. h. im Endeffekt jede Datei, eine Regelung der Zugriffsrechte. Geregelt werden die Rechte folgender Benutzerklassen:
- Eigentümer (engl. user oder owner, Eigentümer), ein spezielles Benutzerkonto am Computer
- Gruppe (engl. group), eine spezielle Unix-Benutzergruppe
- Sonstige (engl. world), jeder andere, der nicht der Eigentümer oder ein Mitglied der Inhabergruppe ist.
Die effektiven Rechte, die ein Benutzer an einer Datei hat, werden in der hier genannten Reihenfolge vergeben. So hat beispielsweise der Besitzer einer Datei all die Rechte, die ihm in dieser Position gegeben sind, ungeachtet der Rechte, die er als Gruppenmitglied hätte.
Der Eigentümer hat als einziger die Möglichkeit, die Dateirechte seiner Datei zu ändern oder den Dateiinhaber bzw. die -gruppe zu ändern (chown, chgrp).
Grundlegende Rechte
Jeder der drei Benutzerklassen kann eines oder mehrere der folgenden Rechte zugewiesen werden:
- Lesen: Der Benutzer darf aus der Datei lesen oder, im Falle eines Verzeichnisses, seinen Inhalt auslesen, allerdings keine Dateirechte dieser Dateien erfahren. Dieses Recht wird oft durch den Buchstaben „r“ für englisch read („lesen“) dargestellt und daher auch R-Bit genannt.
- Schreiben: Der Benutzer darf in die Datei schreiben bzw. Dateien und Unterverzeichnisse in dem Verzeichnis erstellen, bearbeiten, umbenennen, löschen und deren Dateirechte verändern. Dieses Recht wird oft durch den Buchstaben „w“ für englisch write („schreiben“) dargestellt und daher auch W-Bit genannt.
- Ausführen: Der Benutzer darf die Datei als Programm ausführen bzw. in das Verzeichnis wechseln und dort Dateien oder Unterverzeichnise erreichen. Ohne das Lesen-Recht darf der Verzeichnisinhalt jedoch nicht ausgelesen werden. Dieses Recht wird oft durch den Buchstaben „x“ für englisch execute („ausführen“) dargestellt und daher auch X-Bit genannt.
Im Gegensatz zu Access Control Lists werden Rechte nicht vererbt. Neu erstellte Dateien in einem Verzeichnis haben demnach nicht notwendigermaßen die gleichen Rechte wie dieses Verzeichnis.
Sonderrechte/erweiterte Rechte
- Setuid: Wird eine Datei, die das Setuid-Bit gesetzt hat, ausgeführt, dann wird der Prozess mit der effektiven User-ID des Dateieigentümers laufen.
- Setgid: Wird eine Datei, die das Setgid-Bit gesetzt hat, ausgeführt, dann wird der dadurch erzeugte Prozess mit der effektiven Group ID der Inhabergruppe der Datei laufen.
- Sticky bit: Wird eine Datei, die das Sticky Bit gesetzt hat, ausgeführt, wird der Programmcode nach Ausführen im Arbeitsspeicher gehalten (bei swapping-Systemen ohne paging). Mehr Verwendung findet das Bit allerdings bei Verzeichnissen, wo es zur Folge hat dass Benutzer Dateien von anderen Benutzern nicht löschen können.
Technische Hintergründe
In jedem Inode müssen folglich nun drei Informationen gespeichert werden, aus denen sich alle Informationen ableiten lassen:
- Die User-ID des Dateiinhabers
- Die Group-ID der Inhabergruppe
- Die Rechtemaske
Bei der Rechtemaske werden die oben genannten grundlegenden und erweiterten Rechte in 10 Bit kodiert gespeichert.
Rechtenotation
Oktalnotation
Sehr verbreitet ist die Notation der Dateirechte in der Oktalnotation. Diese besteht aus einer drei bzw. vier Ziffern langen Oktalzahl. Jeweils eine Ziffer repräsentiert dabei eine Benutzerklasse, in der Reihenfolge Eigentümer, Gruppe, Sonstige. Eine Ziffer setzt sich dabei als Summe aus den drei Rechten zusammen:
1
für Ausführen2
für Schreiben4
für Lesen
Jede Kombinationsmöglichkeit hat eine andere Ziffer zur Folge. 0
als Sonderfall bedeutet dabei, dass die Benutzerklasse keinerlei Recht am Objekt besitzt.
Es existiert zudem eine Oktalnotation, die vier Ziffern lang ist. Dazu wird der dreiziffrigen Oktalzahl eine vierte Ziffer vorangestellt, die die erweiterten Dateirechte repräsentiert. Analog zu den Dateirechten bildet sich die Ziffer als eine Summe der jeweils gesetzten Sonderrechte:
1
für das Sticky Bit2
für das Setgid Bit4
für das Setuid Bit
Symbolische Notation
Die symbolische Notation ist im Gegensatz zur Oktalnotation eine handlichere Methode, Dateirechte zu notieren. Die Rechte der drei Benutzerklassen werden, in der gleichen Reihenfolge wie bei der Oktalnotation, hintereinander notiert, wobei das Recht jeder Klasse anstelle einer Ziffer durch ein Zeichentriplet repräsentiert wird. An Stelle des ersten Zeichens steht in diesem ein r
, wenn das Lesen-Bit gesetzt ist, -
wenn nicht. An der zweiten Stelle steht ein w
, wenn Schreiben erlaubt ist, -
wenn nicht. An der dritten Stelle steht x
wenn Ausführen erlaubt ist, -
wenn nicht.
Es entsteht ein String mit neun Zeichen. Die erweiterten Dateirechte werden in diesen eingebaut, in dem das x
an Position drei oder sechs durch ein s
ersetzt wird, wenn das Setuid-Bit bzw. das Setgid-Bit gesetzt ist. Ist das Sticky-Bit gesetzt, dann wird es durch ein t
anstelle des letzten x
an Position neun ersetzt. Sind die Ausführ-Rechte für die entsprechenden Benutzerklassen nicht gesetzt, werden die jeweiligen s
bzw. t
großgeschrieben.
Beispiele
Zugriff | Eigentümer | Gruppe | Sonstige |
---|---|---|---|
Lesen | Yes | Yes | Yes |
Schreiben | Yes | No | No |
Ausführen | Yes | Yes | Yes |
Summe: 755 | 4 + 2 + 1 = 7 | 4 + 1 = 5 | 4 + 1 = 5 |
Symbolische Notation | rwxr-xr-x |
||
Bedeutung | Typische Dateirechte für eine ausführbare Datei (ein Programm oder ein Script). Nur der Dateinhaber kann die Datei ändern, alle anderen können lesen und ausführen. |
Zugriff | Eigentümer | Gruppe | Sonstige |
---|---|---|---|
Lesen | Yes | Yes | Yes |
Schreiben | Yes | Yes | No |
Ausführen | No | No | No |
Summe: 664 | 4 + 2 = 6 | 4 + 2 = 6 | 4 |
Symbolische Notation | rw-rw-r-- |
||
Bedeutung | Mögliche Dateirechte für eine nicht ausführbare Datei (z. B. ein Textdokument), welche von Inhaber und Gruppe bearbeitet werden kann, vom Rest allerdings nur gelesen. |