Das r-Recht an einem Verzeichnis zu besitzen heißt, man kann den Inhalt des Verzeichnisses lesen, mit anderen Worten, man kann den Befehl ls für dieses Verzeichnis einsetzen.
Was aber ist nun der Inhalt eines Verzeichnisses? Ein Verzeichnis ist nichts anderes als eine kleine Tabelle. Jede Zeile dieser Tabelle hat zwei Einträge: Den Dateinamen und die zugehörige Inode-Nummer. Wie Sie bereits wissen, ist der Dateiname für Linux nicht das entscheidende Kriterium für die Bearbeitung einer Datei. Linux orientiert sich an der Inode.
Was bedeutet in diesem Zusammenhang das r-Recht für ein Verzeichnis?
Ganz einfach: Mit dem r-Recht am Verzeichnis können darin Dateien gefunden werden (der Befehl ls liefert die Namen der im Verzeichnis enthaltenen Dateien), zusätzlich kann man die Inode-Nummern dieser Dateien abfragen (ls -i
).
Da in der Inode selbst die Verwaltungsinformationen (darunter die Rechtetabelle für die Datei) gespeichert sind, ist ein Zugriff auf eine Datei also erst dann möglich, wenn man ihre Inode kennt! Das heißt also, wenn Ihnen das r-Recht an einem Verzeichnis fehlt, haben Sie keinen Zugang zu den darin enthaltenen Dateien! Insbesondere sind auch Unterverzeichnisse dem Zugriff des Anwenders entzogen!
Das für das Verständnis der Linux-Rechte wichtigste Recht ist wohl das w-Recht für Verzeichnisse. Dieses Recht beinhaltet die Möglichkeit ein Verzeichnis verändert abzuspeichern. Anders ausgedrückt: Ein Benutzer, der an einem Verzeichnis das w-Recht hat, kann dieses verändern.
Nun ist wie gesagt ein Verzeichnis eine Liste von Dateinamen (plus zugehöriger Inode-Nummer). Besitzen Sie das w-Recht an einem Verzeichnis, können Sie einen Verzeichniseintrag löschen, das Verzeichnis wird verändert gespeichert, der Dateiname und die Inode-Nummer existieren nicht mehr. Einen Verzeichniseintrag löschen heißt also den Zugang (Link) zu einer Datei löschen! Dies geschieht allerdings nicht mit einem Editor sondern mit Hilfe des Befehls rm.
Verzeichnisse sind insofern ``schreibgeschützt'', als Linux aus Konsistenzgründen schreibende Zugriffe auf Verzeichnisse nur mit dafür geeigneten Befehlen erlaubt. Das Bearbeiten mit einem Editor würde viele Benutzer überfordern, denn es muß Rücksicht auf die Struktur des Verzeichnisinhalts genommen werden. Wird diese aber zerstört, sind die Daten im Verzeichnis nicht mehr verfügbar!
Nehmen wir nun einen extremen Fall an. Eine Datei, an der Sie keinerlei Rechte besitzen, befinde sich in einem Verzeichnis, in dem Sie das w-Recht haben. Diese Datei können Sie, auch ohne Rechte an ihr selbst, löschen, denn Sie können das Verzeichnis manipulieren! Sie entfernen mit dem Befehl rm den Eintrag der Datei im Verzeichnis und somit löschen Sie den Zugang zu den Daten.
Gleiches gilt für das Umbenennen (ändert den Eintrag in einem Verzeichnis), Verschieben (löscht den Eintrag in einem Verzeichnis) oder Erstellen (erzeugt einen neuen Eintrag in einem Verzeichnis) einer Datei. Auch hierzu ist das w-Recht am Verzeichnis von entscheidender Bedeutung.
Wie Sie sehen hängen sehr viele Dateioperationen von Verzeichnisrechten ab. Vereinfachend gesagt, Verwaltungsoperationen mit Dateien, wie z. B. Löschen, Verschieben oder Umbenennen sind Eingriffe in die Verzeichnisstruktur und werden deshalb über Rechte an Verzeichnissen geregelt. Die inhaltliche Manipulation von Dateien ist dagegen nur möglich, wenn Sie Rechte direkt an der Datei haben. Es kann sein, daß Sie eine Datei löschen, umbenennen oder verschieben können, ohne ihren Inhalt auch nur sehen zu können. Zur Manipulation der Dateiinhalte benötigt Sie zumindest das r-Recht an ihr, alle anderen genannten Operationen erfordern das w-Recht am Verzeichnis.
Alles in allem kann man feststellen, daß Verzeichnisse bezüglich der Rechte r und w wie gewöhnliche Dateien behandelt werden. Da man aber mit einem Verzeichnis eine Liste von Dateinamen bearbeitet, bedeutet das Ändern von Verzeichnissen sehr häufig ein Löschen, Umbenennen oder Verschieben von Dateien.
Bis jetzt haben sich Verzeichnisse wie Dateien verhalten. Beim x-Recht gibt es aber einen signifikanten Unterschied. x steht für das Recht ein Programm ausführen zu können. In diesem Sinne kann also ein Verzeichnis nicht ausführbar sein.
Das x-Recht an einem Verzeichnis bedeutet nun, daß Sie
Rechte an einem Verzeichnis betreffen die darin enthaltenen Dateien.
Wollen Sie sich den Inhalt der Datei /home/tapico/.profile mit
cat /home/tapico/.profile
ansehen, so setzt dies folgende Rechte voraus:
cat muß zunächst den Inhalt von /home/tapico lesen, um zu prüfen, ob die Datei überhaupt existiert. Dies erlaubt das r-Recht am Verzeichnis. Weiter benötigt cat die Inode-Nummer der Datei, um über diese die Inode selbst finden, Zugang dazu erhält cat über das x-Recht an /home/tapico In der Inode sind nun aber alle relevanten Informationen, die cat braucht, um den Dateiinhalt endlich lesen zu können. Hier ist die Rechtetabelle, die über das r-Recht die Erlaubnis zum Lesen gewährt und schließlich sind hier die Informationen abgelegt, mit deren Hilfe die Daten auf der Platte gefunden werden können.
In der Praxis erhält man mit dem r-Recht an einem Verzeichnis stets auch das x-Recht. Natürlich kann man das x-Recht wieder nehmen (sofern man dazu die Erlaubnis hat), dann schafft man aber eine skurile Situation: Das Leserecht am Verzeichnis erlaubt es dann zum Beispiel ls, Dateien zu finden, weitere Informationen werden aber verweigert. Man erhält in jedem Fall eine Fehlermeldung wie die folgende
/bin/ls: /home/tapico/.profile: Permission denied
ls meldet, daß man auf die Inode von .profile im Verzeichnis /home/tapico nicht zugreifen darf: Permission denied.
An den meisten Verzeichnissen im Dateisystem hat der gewöhnliche Benutzer die Rechte r und x, am Heimatverzeichnis aber alle Rechte.
Neben den Abkürzungen r, w und x gibt es auch noch eine oktale9.1 Notation der Rechte. Dies ist eine dreistellige Zahl, bei der die erste Ziffer für den Besitzer gilt, die zweite für die Gruppe, die dritte für alle anderen.
Ziffer | Bedeutung |
4 | r-Recht |
2 | w-Recht |
1 | x-Recht |
0 | kein Recht |
Die Rechtekombinationen ergeben sich durch Addition! So bedeutet 754 dasselbe wie
rwxr-xr--
!
Anstelle der Kennzeichnung x treten hin und wieder ein s oder ein t auf.