13.6Zugriffsrechte, Benutzer und Gruppenzugehörigkeit
Linux ist als Multiuser-System konzipiert und benötigt daher Mechanismen, die steuern, wer auf welche Dateien zugreifen darf, wer sie ändern darf etc. Die Basis des Zugriffssystems stellt die Verwaltung von Benutzern und Gruppen dar, die in Abschnitt 19.4, »Benutzer und Gruppen, Passwörter«, beschrieben wird. Vorerst gehen wir einfach einmal davon aus, dass jeder Benutzer unter Linux einem Benutzer-Account und einer oder mehreren Gruppen zugeordnet ist. Diese Minimalvoraussetzung reicht aus, um das Konzept der Zugriffsrechte von Dateien zu verstehen.
Zugriffsrechte für Dateien
Mit jeder Datei bzw. mit jedem Verzeichnis werden folgende Informationen gespeichert:
-
der Besitzer (Owner) der Datei
-
eine Gruppe, der die Datei zuzuordnen ist
-
neun Zugriffsbits (rwxrwxrwx für Read/Write/Execute für den Besitzer, für alle Gruppenmitglieder und für den Rest der Welt)
-
einige weitere Zusatzbits für Spezialfunktionen
Der Besitzer (Owner) einer Datei ist in der Regel die Person, die die Datei erzeugt hat. Als Gruppe wird normalerweise die primäre Gruppe des Besitzers verwendet – als die Defaultgruppe des Besitzers.
Die Zugriffsinformationen r, w und x steuern, wer die Datei lesen (read), schreiben (write) und ausführen darf (execute). Diese Informationen werden getrennt für den Besitzer, für die Gruppe und für alle anderen Benutzer gespeichert. Das ermöglicht es, dem Besitzer mehr Rechte zu geben als anderen Benutzern. Die Informationen werden meist Zugriffsbits genannt, weil sie intern als Zahl mit bitweiser Codierung gespeichert werden.
Wer darf eine Datei löschen?
Die Zugriffsrechte einer Datei haben keinen Einfluss darauf, wer eine Datei löschen darf. Darüber entscheidet einzig und allein derjenige, der Zugriff auf das Verzeichnis hat, in dem sich die Datei befindet! Eine Datei darf löschen, wer für das Verzeichnis die Rechte w und x hat. Mehr Informationen zu den Zugriffsrechten für Verzeichnisse folgen im nächsten Abschnitt.
Die Zugriffsbits, der Besitzer sowie die Gruppenzugehörigkeit einer Datei können mit ls -l betrachtet werden. Für eine typische Textdatei liefert ls das folgende Ergebnis:
Kurz die Interpretation: Das erste Zeichen gibt den Dateityp an. Das Zeichen - bedeutet, dass es sich um eine normale Datei handelt. Andere Möglichkeiten sind d für ein Verzeichnis (Directory), l für einen symbolischen Link etc.
Die drei Zeichen rw- geben an, dass die Datei vom Besitzer michael gelesen und verändert werden kann. Da es sich um eine Textdatei handelt, ist das erste x-Bit deaktiviert, die Datei kann also nicht ausgeführt werden.
Die folgenden drei Zeichen r-- geben an, dass alle Mitglieder der Gruppe users die Datei lesen, aber nicht verändern dürfen.
Aus den letzten drei Zeichen --- geht hervor, dass andere Benutzer – die also weder michael noch Mitglieder der Gruppe user sind – die Datei weder lesen noch verändern dürfen.
Wenn michael möchte, dass diese Datei von allen Anwendern gelesen werden kann, dann muss er das letzte r-Bit aktivieren. Dazu verwendet er das Kommando chmod o+r:
Manchmal sollen zwei oder mehr Benutzer die Möglichkeit bekommen, die Datei zu verändern. Dazu kann eine neue Gruppe gebildet werden, der diese Benutzer angehören. Wenn michael und kathrin das Dokumentationsteam einer Firma bilden, wäre als Gruppenname etwa dokuteam sinnvoll. Anschließend wird die Gruppenzugehörigkeit mit chgrp geändert:
Tatsächlich ist die gemeinsame Bearbeitung von Dateien noch ein wenig diffiziler: Es muss auch sichergestellt werden, dass alle Benutzer Zugriff auf das Verzeichnis haben, in dem sich die Dateien befinden. Mehr Details zu diesem Thema folgen gleich.
Statt in der Schreibweise rwxrwxrwx werden die neun Zugriffsbits sowie drei weitere Spezialbits oft auch oktal dargestellt. Das ist wahrscheinlich die populärste Anwendung, die dieses Zahlensystem auf der Basis der Zahl 8 bis heute hat.
Den Zugriffsbits für den Benutzer, die Gruppe und alle anderen ist jeweils eine Ziffer zugeordnet (siehe Tabelle 13.7). Jede Ziffer ist aus den Werten 4, 2 und 1 für r, w und x zusammengesetzt. 660 bedeutet daher rw-rw----, 777 steht für rwxrwxrwx. Die in Abschnitt 13.7, »Spezialbits und die umask-Einstellung«, vorgestellten setuid-, setgid- und sticky-Bits haben die Oktalwerte 4000, 2000 und 1000.
Code |
Bedeutung |
---|---|
4000 = s = setiud |
Spezialbits |
400 = r = read |
Zugriffsbits für den Besitzer (u = user in chmod) |
40 = r |
Zugriffsbits für Gruppenmitglieder (g = group) |
4 = r |
Zugriffsbits für alle anderen (o = others) |
Tabelle 13.7Oktalcodes für die Zugriffsbits
Mit dem Kommando chmod können Sie die Zugriffsbits auch oktal einstellen, was viele erfahrene Benutzer wegen des geringeren Tippaufwands vorziehen:
Erstaunlicherweise ist ls aber nicht in der Lage, die Zugriffsbits oktal darzustellen. Abhilfe schafft das Kommando stat:
Der Zugriff auf Hardware-Komponenten wie Festplatten, DVD-Laufwerke, Schnittstellen etc. erfolgt in Linux über sogenannte Devices (siehe Abschnitt 13.10). Um gezielt steuern zu können, welcher Benutzer auf welche Devices zugreifen darf, sind den Devices unterschiedliche Benutzergruppen zugeordnet. Beispielsweise sind die Devices /dev/ttyS* für die seriellen Schnittstellen unter Debian und Ubuntu der Gruppe dialout zugeordnet:
Wenn der Systemadministrator möchte, dass der User hubert die serielle Schnittstelle nutzen darf, fügt er hubert zur Gruppe dialout hinzu:
Zugriffsrechte für Verzeichnisse
Die neun Zugriffsbits haben im Prinzip auch bei Verzeichnissen Gültigkeit, allerdings besitzen sie dort eine etwas abweichende Bedeutung:
-
Das r-Bit erlaubt Ihnen, die Liste der Dateinamen zu ermitteln (Kommando ls).
-
Das w-Bit gibt Ihnen das Recht, den Inhalt eines Verzeichnisses zu ändern, also z.B. eine neue Datei zu erzeugen oder eine vorhandene Datei umzubenennen oder zu löschen.
-
Mit dem x-Bit können Sie in ein Verzeichnis wechseln (Kommando cd). Sie können aber nur auf Dateien zugreifen, deren Namen Sie kennen. Erst die Kombination rx ermöglicht es, ein Verzeichnis richtig zu bearbeiten, also z.B. mit ls -l eine Liste aller Dateinamen samt detaillierter Informationen zu jeder Datei zu ermitteln. Wenn sowohl x als auch w gesetzt sind, dürfen im Verzeichnis neue Dateien erzeugt werden.
Die ein wenig merkwürdige Interpretation der r- und x-Zugriffsrechte hat damit zu tun, dass Verzeichnisse vom Dateisystem als ein Sonderfall einer Datei betrachtet werden; der Inhalt der Verzeichnis-»Datei« ist eine Auflistung der Namen der Dateien, die sich im Verzeichnis befinden, sowie von deren Inode-Nummern.
Tabelle 13.8 fasst zusammen, welche Zugriffsrechte für ein Verzeichnis und die darin enthaltene Datei erforderlich sind, um bestimmte Aktionen durchzuführen. Das Zeichen – in der Spalte Datei gibt an, dass die Zugriffsrechte auf die Datei nicht relevant sind. Wie üblich gelten diese Regeln nur für gewöhnliche Benutzer. root darf unabhängig von den eingestellten Zugriffsrechten alles!
Aktion |
Kommando |
Datei |
Verzeichnis |
---|---|---|---|
in Verzeichnis wechseln |
cd verzeichnis |
– |
x |
Liste der Dateien ermitteln |
ls verzeichnis/* |
– |
r |
Dateiinformationen lesen |
ls -l verzeichnis/* |
– |
rx |
neue Datei erzeugen |
touch verzeichnis/neuedatei |
– |
wx |
Datei lesen |
less verzeichnis/datei |
r |
x |
vorhandene Datei ändern |
cat >> verzeichnis/datei |
w |
x |
Datei löschen |
rm verzeichnis/datei |
– |
wx |
Programm ausführen |
verzeichnis/programm |
x |
x |
Script-Datei ausführen |
verzeichnis/script |
rx |
x |
Tabelle 13.8Erforderliche Zugriffsrechte für Standardaktionen
Bei verschachtelten Verzeichnissen ist für die Basisverzeichnisse vor allem das x-Bit entscheidend. Ist dieses nicht gesetzt, können die Unterverzeichnisse nicht genutzt werden. In der Praxis ist es zumeist zweckmäßig, für Basisverzeichnisse auch das r-Bit zu setzen. Fehlt das Leserecht, muss der Anwender den Namen des Unterverzeichnisses wissen.
Welche Operationen im Unterverzeichnis erlaubt sind, hängt ausschließlich von den rwx-Bits dieses Verzeichnisses ab. Wenn für das Unterverzeichnis die Rechte rwx gesetzt sind, können somit Dateien gelesen, erzeugt, verändert und gelöscht werden – selbst dann, wenn in den Basisverzeichnissen die Rechte r und w fehlen!
Betrachten Sie zum besseren Verständnis das Verzeichnis /, das Verzeichnis /home und ein darin enthaltenes Benutzerverzeichnis:
Für / und /home gilt: Jeder darf die Namen der in diesem Verzeichnis enthaltenen Dateien und Unterverzeichnisse ermitteln sowie detaillierte Informationen darüber abfragen, also ls -l /home ausführen. Aber nur root darf mit mkdir /home/neuerBenutzer neue Heimatverzeichnisse einrichten.
Für /home/kofler gilt: Nur der Benutzer kofler darf in diesem Verzeichnis neue Dateien anlegen. Alle anderen Benutzer dürfen in das Verzeichnis reinsehen (ls -l), aber nichts verändern. Es bleibt dem Besitzer des Heimatverzeichnisses überlassen, die Zugriffsrechte für eigene Dateien und Unterverzeichnisse gegebenenfalls so einzustellen, dass auch ein Lesezugriff unmöglich ist.
Beachten Sie, dass kofler selbstverständlich in seinem Heimatverzeichnis Dateien anlegen, verändern und löschen darf, obwohl er keine Schreibrechte in / und /home hat!
Einige Linux-Distributionen, wie Fedora oder Red Hat, stellen die Zugriffsrechte für die Heimatverzeichnisse restriktiver ein und erlauben wirklich nur dem Besitzer einen Blick in das Verzeichnis:
Die gerade erwähnten Heimatverzeichnisse sind ein Beispiel für Verzeichnisse, die nur für einen bestimmten Benutzer gedacht sind. Wie aber richten Sie Verzeichnisse ein, die mehrere Benutzer gemeinsam nutzen können – z.B. ein Projektverzeichnis für die Benutzer sebastian und matthias, sodass beide in dem Verzeichnis Dateien lesen und verändern dürfen?
Die Lösung für derartige Probleme sind Gruppen: Sie legen eine neue Gruppe projektxy an und ordnen sebastian und matthias dieser Gruppe zu. Nun brauchen Sie noch ein Projektverzeichnis, das dieser Gruppe zugeordnet ist:
Die Einstellung der Zugriffsrechte für /projekte ist wie für das /home-Verzeichnis: Nur root darf darin neue Dateien und Verzeichnisse anlegen. Alle anderen dürfen die Verzeichnisse benutzen.
Im Verzeichnis /projekte/xy haben alle Mitglieder der Gruppe projektxy Schreib- und Leserechte, also in diesem Beispiel sebastian und matthias.
Die einzige Besonderheit ist das Setgid-Bit für dieses Verzeichnis (Oktalcode 2000). Es bewirkt, dass in diesem Verzeichnis eingerichtete Dateien und Verzeichnisse automatisch der Gruppe projektxy zugeordnet werden, nicht der Gruppe desjenigen Benutzers, der die Datei erzeugt. Damit wird der Fall vermieden, dass sebastian eine neue Datei erzeugt und matthias diese zwar sieht und lesen, aber nicht verändern kann. Hintergrundinformationen zum Setgid-Bit folgen im nächsten Abschnitt.