Dieser Artikel ist der achte von 10 Teilen zum Thema Linux Terminal in 10 Teilen, dabei geht es um sehr wichtige Grundlagen. Wie vergibt man im Linux System verschiedene Zugriffsrechte.
» Zur Übersicht der Artikelserie «
Grundlagen
Ein äußerst wichtiges Kapitel sind natürlich die Zugriffsrechte. Wer darf was? Auch hier wollen wir uns wieder auf das Terminal beschränken. Über unseren bereits bekannten Befehl ls -l
erhalten wir sämtliche Informationen bzgl. der Berechtigungen. Nehmen wir nochmals das Bild aus der Verzeichnisstruktur.

Jetzt schauen wir uns die ersten “Kryptischen” Zeichen (drwxrwx—) an. Was das “d” oder “l” oder “-” bedeutet haben bereits bei den Dateiarten erläutern. Generell unterscheidet Linux drei verschiedene Benutzerklassen.
- Der Eigentümer der Datei (owner)
- Die Mitglieder der Gruppe, der die Datei zugeordnet ist (group)
- alle anderen Benutzer (others)
Die verschiedenen Zugiffsrechte
Für jede Benutzerklassen können jetzt getrennt verschiedene Rechte gesetzt werden.
- (r) Leserecht
- (w) Schreibrecht
- (x) Ausführungsrecht
Neben diesen Rechten können pro Datei noch die drei Spezialrechte SUID, SGID und das Sticky-Bit gesetzt werden.

- Sticky-Bit: Bei gesetztem Sticky-Bit darf jeder Benutzer nur die Dateien löschen die Ihm gehören. Beim /tmp Verzeichnis ist dieses Bit (rwt) gesetzt. D.h. jeder kann hier seine Dateien lesen, erstellen und löschen.
- SUID (Set-User-ID) auf Programme: Das Programm läuft mit den Rechten des Datei-Eigentümers. Das ist z.B. wichtig wenn ein Benutzer sein Passwort ändern möchte. Dies wird in der datei /etc/passwd konfiguriert und normalerweise darf hier nur der root Änderungen vornehmen. Durch das gesetzte SUID Bit kann der Benutzer in die Datei schreiben.
- SGID (Set-Group-ID) auf Programme: Dieses Bit funktioniert genauso wie das SUID nur das hier die Rechte der Gruppe verwendet werden.
- SGID auf Verzeichnisse: Sobald das SGID -Bit auf Verzeichnisse angewendet wird, werden die darin erstellen Dateien der Gruppe des Verzeichnisses zugeordnet und nicht wie üblich der Gruppe des Benutzers, der die Datei erzeugt hat.
Hinweis zu den Spezialrechten:
Damit diese Rechte wirksam werden, muss immer entsprechend das Ausführungsecht (x) gesetzt sein. Wenn dieses Recht nicht gesetzt ist, so wird das Spezialrecht immer mit Großbuchstaben angezeigt und es bleibt wirkungslos.
- Bei SUID -> Ausführungsrecht auf Eigentümer der Datei
- Bei GUID -> Ausführungsrecht für die Gruppe
- Beim Sticky-Bit: -> Ausführungsrecht für alle anderen Benutzer
Zugriffsrechte ändern
Für das Ändern der Zugriffsrechte gibt es den Befehl chmod
. Dieser kann auf zwei unterschiedlichen Arten angewendet werden.
- Symbolische Schreibweise
- Oktalnotation
Beide Arten führen in der Regeln natürlich zum gleichen Ergebnis.
1. Symbolische Schreibweise
Hierfür sollte man sich die folgende Tabelle merken:
Benutzerklasse | Rechte | Symbol | |||
u | Eigentümer (user,owner) | r | lesen (read) | + | Berechtigung hinzufügen |
g | Mitglied der Gruppe (group) | w | schreiben (write) | – | Berechtigung entfernen |
o | Alle anderen Benutzer (others) | x | ausführen (execute) | = | nur diese Rechte werden gesetzt. Sollten andere Rechte gesetzt sein, so werden sie entzogen |
a | Alle drei Benutzerklassen (all) | s | SUID (SGID | ||
t | Sticky-Bit |
Beispiel: Wir entziehen einer Datei (script.sh) das Leserecht (r) für alle anderen Benutzer (others) und anschließend geben wir der Gruppe und dem Eigentümer das Ausführungsrecht (x).

chmod o-r script.sh

chmod u+x,g+x script.sh

2. Oktalnotation
Es werden für jedes Zugriffsrecht 3 Bits verwendet. Für ein vergebenes Recht wird das entsprechende Bit gesetzt.

Hier werden die Oktalzahlen verwendet, um eine Datei mit einem bestimmten Zugriffsrecht auszustatten. D. h. man muss sich folgendes merken:
- 4 : Lesen
- 2 : Schreiben
- 1 : Ausführen
Möchte man mehrere Rechte gleichzeitig setzen, so verwendet man die Summe der jeweiligen einzelnen Rechte. Also z.B. Lesen und Schreiben wäre 6; Lesen, Schreiben und Ausführen dann 7. Wenn man kein Sonderrecht setzten möchte, so kann die Angabe der Oktalzahl 0 entfallen.
Beispiel: Die Datei script.sh erhält folgende Zugriffsrechte: Eigentümer: Lesen, Schreiben, Ausführen; Gruppe: Lesen und Schreiben, Rest: Lesen
chmod 764 script.sh

Eigentümerschaft einer Datei ändern
Generell kann natürlich nur der root die Eigentümerschaft von Dateien ändern. Um den Eigentümer zu ändern verwendet man das Kommando chown
.
Allgemeine Syntax:
chown [Optionen] Eigentümer[:Gruppe] Datei
Um die Datei einer anderen Gruppe zuzuordnen nimmt man das Kommando chgrp.
Allgemeine Syntax:
chgrp [Optionen] Gruppe Datei