9.3. Berechtigungen verwalten
Linux ist eindeutig ein Mehrbenutzersystem, und daher ist es erforderlich, ein Berechtigungssystem bereitzustellen, um genehmigte Vorgänge an Dateien und Verzeichnissen zu steuern, einschließlich aller Systemressourcen und Laufwerke (in einem Unix-System wird jedes Laufwerk als eine Datei oder ein Verzeichnis dargestellt). Dies ist allen Unix-Systemen gemein, aber ist immer sinnvoll daran zu erinnern, vor allem, da es einige sehr interessante und relativ unbekannte fortgeschrittene Anwendungen davon gibt.
Jede Datei und jeder Ordner hat spezifische Berechtigungen für drei Kategorien von Benutzern:
seinen Eigentümer (symbolisiert durch u
wie in „user“);
seine Eigentümergruppe (symbolisiert durch g
wie in „group“), die alle Mitglieder der Gruppe repräsentiert;
die Sonstigen (symbolisiert durch o
wie in „other“).
Drei Arten von Berechtigungen können kombiniert werden:
Lesen (symbolisiert durch r
wie in „read“);
Schreiben (oder Ändern, symbolisiert durch w
wie in „write“);
Ausführen (symbolisiert durch x
wie in „eXecute“).
Bei einer Datei sind diese Berechtigungen leicht zu verstehen: Lesezugriff erlaubt das Lesen des Inhalts (einschließlich des Kopierens), Schreibzugriff erlaubt es, sie zu verändern, und Ausführungszugriff erlaubt es Ihnen, sie auszuführen (was nur funktionieren wird, wenn sie ein Programm ist).
Ein Verzeichnis wird anders gehandhabt. Lesezugriff gewährt das Recht, die Liste der Einträge (Dateien und Verzeichnisse) durchzugehen, Schreibzugriff erlaubt es, Dateien zu erstellen oder zu löschen, und Ausführungszugriff erlaubt es, es zu durchqueren (insbesondere dorthin mit dem Befehl cd
zu gehen). Die Berechtigung, ohne ein Verzeichnis zu lesen auf dessen Inhalt zugreifen zu können, gestattet Zugriff auf namentlich bekannte Dateien, nicht jedoch auf solche von denen man nichts weiß oder deren genauen Namen man nicht kennt.
Drei Befehle steuern die einer Datei zugeordneten Berechtigungen:
chown Benutzer Datei
ändert den Eigentümer der Datei;
chgrp Gruppe Datei
ändert die Eigentümergruppe;
chmod Rechte Datei
ändert die Berechtigungen für die Datei.
Es gibt zwei Arten, die Berechtigungen darzustellen, wovon die symbolische Darstellung wohl am einfachsten zu verstehen und zu merken ist. Es geht um die oben erwähnten Buchstabensymbole. Sie können Berechtigungen für jede Kategorie von Benutzern festlegen (u
/g
/o
), indem Sie sie entweder ausdrücklich setzen (mit =
), sie hinzufügen (+
) oder sie entfernen (-
). So gewährt die Formel u=rwx,g+rw,o-r
dem Eigentümer Lese-, Schreib- und Ausführungszugriff, fügt Lese- und Schreibzugriff für die Eigentümergruppe hinzu und entfernt den Lesezugriff für andere Benutzer. Rechte, die in einem solchen Befehl nicht durch Hinzufügen oder Entfernen modifiziert werden, bleiben unverändert. Der Buchstabe a
, für „all“, deckt alle drei Benutzerkategorien ab, so dass a=rx
allen drei Kategorien die gleichen Rechte gewährt (Lesen und Ausführen, aber nicht Schreiben).
Die (oktale) Zahlendarstellung ordnet jeder Berechtigung einen Wert zu: 4 für Lesen, 2 für Schreiben und 1 für Ausführen. Wir verknüpfen jede Kombination von Berechtigungen durch die Summe der Zahlen. Jeder Wert wird dann einer anderen Kategorie von Benutzern zugeordnet, indem sie von vorne nach hinten in der üblichen Reihenfolge (Eigentümer, Gruppe, Sonstige) angeordnet werden.
So vergibt zum Beispiel der Befehl chmod 754 datei
die folgenden Berechtigungen: Schreiben, Lesen und Ausführen für den Eigentümer (da 7 = 4 + 2 + 1); Schreiben und Ausführen für die Gruppe (da 5 = 4 + 1); nur Lesen für Sonstige. Die 0
bedeutet keine Berechtigung; so gestattet chmod 600 Datei
dem Eigentümer Lese-/Schreibzugriff und keine Berechtigung für alle anderen. Die häufigsten Berechtigungskombinationen sind 755
für ausführbare Dateien und Verzeichnisse und 644
für Dateien, die Daten enthalten.
Um spezielle Berechtigungen darzustellen, können Sie dieser Zahl eine vierte Ziffer nach dem gleichen Prinzip voranstellen, wobei die setuid
-, setgid
- und sticky
-Bits jeweils 4, 2 und 1 entsprechen. chmod 4754
fügt das setuid
-Bit den zuvor beschriebenen Berechtigungen hinzu.
Beachten Sie, dass die oktale Schreibweise es nur erlaubt, alle Berechtigungen gleichzeitig für eine Datei zu setzen. Sie können sie nicht dazu benutzen, einfach eine neue Berechtigung hinzuzufügen, wie den Lesezugriff für die Eigentümergruppe, da Sie die bestehenden Berechtigungen berücksichtigen und den entsprechenden neuen numerischen Wert berechnen müssen.