3.2. Benutzer und Zugriffsberechtigungen

Seit den Anfängen, also Anfang 1990, wurde Linux als Mehrbenutzersystem entwickelt. Es kann also von mehreren Benutzern gleichzeitig bearbeitet werden. Bevor Benutzer auf ihrer Arbeitsstation eine Sitzung starten können, müssen Sie sich beim System anmelden. Jeder Benutzer verfügt über einen Benutzernamen mit einem zugehörigen Passwort. Durch diese Abgrenzung kann gewährleistet werden, dass nicht autorisierte Benutzer keine Dateien anzeigen können, für die sie keine Berechtigung aufweisen. Umfassendere Änderungen des Systems, beispielsweise das Installieren neuer Programme, sind im Regelfall für normale Benutzer entweder gar nicht oder nur beschränkt möglich. Nur der Benutzer „root“, auch Superuser genannt, kann uneingeschränkt Änderungen am System vornehmen und uneingeschränkt auf alle Dateien zugreifen. Diejenigen Benutzer, die hinsichtlich dieses Konzepts überlegt vorgehen, sich also nur als Benutzer root mit uneingeschränkten Rechten anmelden, wenn dies erforderlich ist, können dazu beitragen, dass Risiko versehentlicher Datenverluste zu minimieren. Da unter normalen Umständen nur root Systemdateien löschen oder Festplatten formatieren kann, kann die Bedrohung durch Trojanische Pferde bzw. durch die versehentliche Eingabe zerstörender Befehle deutlich verringert werden.

3.2.1. Dateisystemberechtigungen

Grundsätzlich ist jede Datei in einem Linux-Dateisystem einem Benutzer und einer Gruppe zugehörig. Sowohl diese Gruppen (die Eigentümer) als auch alle anderen können zum Schreiben, Lesen oder Ausführen dieser Dateien autorisiert werden.

Eine Gruppe kann, in diesem Fall, als eine Reihe verbundener Benutzer mit bestimmten gemeinsamen Rechten definiert werden. So kann eine Gruppe, die an einem bestimmten Projekt arbeitet, den Namen project3 erhalten. Jeder Benutzer in einem Linux-System ist Mitglied mindestens einer eigenen Gruppe, normalerweise users. In einem System können so viele Gruppen wie erforderlich vorhanden sein, jedoch kann nur root Gruppen hinzufügen. Jeder Benutzer kann mithilfe des Befehls groups ermitteln, in welchen Gruppen er Mitglied ist.

Dateizugriff

Berechtigungen werden im Dateisystem für Dateien und Verzeichnisse unterschiedlich organisiert. Informationen zu Dateiberechtigungen können über den Befehl ls -l angezeigt werden Die Ausgabe sieht u. U. wie in Beispiel 3.1, „Beispielausgabe mit Dateiberechtigungen“ aus.

Beispiel 3.1. Beispielausgabe mit Dateiberechtigungen

-rw-r----- 1 tux project3 14197 Jun 21  15:03 Roadmap

Wie aus der dritten Spalte hervorgeht, ist diese Datei Benutzer tux zugehörig. Sie ist der Gruppe project3 zugewiesen. Um die Benutzerberechtigungen für die Datei Roadmap zu ermitteln, muss die erste Spalte genauer untersucht werden.

-

rw-

r--

---

Typ

Benutzerberechtigungen

Gruppenberechtigungen

Berechtigungen für andere Benutzer

Diese Spalte besteht aus einem vorangestellten Zeichen, auf das neun in Dreiergruppen aufgeteilte Zeichen folgen. Der erste der zehn Buchstaben steht für den Typ der Dateisystemkomponente. Der Bindestrich () besagt, dass es sich um eine Datei handelt. Es kann auch auf ein Verzeichnis (d), einen Link (l), ein Blockgerät (b) oder ein zeichenorientiertes Gerät hingewiesen werden.

Die nachfolgenden drei Blöcke folgen einem Standardmuster. Aus den ersten drei Zeichen geht hervor, ob die Datei gelesen werden kann (r) oder nicht (). Ein w im mittleren Teil gibt an, dass das entsprechende Objekt bearbeitet werden kann, ein Bindestrich () bedeutet, dass nicht in die Datei geschrieben werden kann. Ein x an dritter Stelle gibt an, dass das Objekt ausgeführt werden kann. Da es sich bei der Datei in diesem Beispiel um eine Textdatei handelt, nicht um eine ausführbare Datei, ist der Zugriff zum Ausführen für diese bestimmte Datei nicht erforderlich.

In diesem Beispiel verfügt tux als Eigentümer der Datei Roadmap, über Lese- (r) und Schreibzugriff (w) für die Datei, kann sie jedoch nicht ausführen (x). Die Mitglieder der Gruppe project3 können die Datei lesen, sie jedoch nicht bearbeiten oder ausführen. Andere Benutzer dürfen auf diese Datei nicht zugreifen. Weitere Berechtigungen können über Zugriffssteuerungslisten (Access Control Lists, ACLs) zugewiesen werden.

Verzeichnisberechtigungen

Zugriffsberechtigungen für Verzeichnisse weisen den Typ d auf. Für Verzeichnisse weicht die Bedeutung der einzelnen Berechtigungen geringfügig voneinander ab.

Beispiel 3.2. Beispielausgabe mit Verzeichnisberechtigungen

drwxrwxr-x 1 tux project3 35 Jun 21 15:15  ProjectData

In Beispiel 3.2, „Beispielausgabe mit Verzeichnisberechtigungen“ sind der Eigentümer (tux) und die Eigentümergruppe (project3) des Verzeichnisses ProjectData leicht zu identifizieren. Im Gegensatz zu den Dateizugriffsberechtigungen unter Dateizugriff gibt die festgelegte Leseberechtigung (r) an, dass der Inhalt des Verzeichnisses angezeigt werden kann. Die Schreibberechtigung (w) ermöglicht die Erstellung neuer Dateien. Die Berechtigung für das Ausführen (x) ermöglicht dem Benutzer den Wechsel zu diesem Verzeichnis. Im obigen Beispiel können der Benutzer tux sowie die Mitlgieder der Gruppe project3 zum Verzeichnis ProjectData wechseln (x), den Inhalt anzeigen (r) sowie Dateien hinzufügen oder löschen (w). Die restlichen Benutzer verfügen hingegen über weniger Zugriffsrechte. Sie können zum Verzeichnis wechseln (x) und es durchsuchen (r), jedoch keine neuen Dateien hinzufügen (w).

3.2.2. Bearbeiten von Dateiberechtigungen

Ändern von Zugriffsberechtigungen

Die Zugriffsberechtigungen für eine Datei und ein Verzeichnis können vom Eigentümer und natürlich von root mithilfe des Befehls chmod geändert werden, gefolgt von den Parametern, mit denen die Berechtigungen geändert werden, und einem oder mehreren Dateinamen. Die Parameter fallen in unterschiedliche Kategorien:

  1. Hinsichtlich der Benutzer

    • u (user (Benutzer)) – Eigentümer der Datei

    • g (group (Gruppe)) – Gruppe, der die Datei gehört

    • o (others (weitere)) – zusätzliche Benutzer (wenn kein Parameter angegeben ist, gelten die Änderungen für alle Kategorien)

  2. Ein Zeichen für das Löschen (), Festlegen (=) oder Einfügen (+)

  3. Die Abkürzungen

    • rread (Lesen)

    • wwrite (Schreiben)

    • xexecute (Ausführen)

  4. Dateiname oder durch Leerzeichen voneinander getrennte Dateinamen

Wenn der Benutzer tux in Beispiel 3.2, „Beispielausgabe mit Verzeichnisberechtigungen“ beispielsweise auch anderen Benutzern Schreibzugriff (w) für das Verzeichnis ProjectData gewähren möchte, ist dies über den Befehl chmod o+w ProjectData möglich.

Wenn er jedoch allen Benutzern außer sich selbst keine Schreibberechtigungen erteilen möchte, kann er hierzu den Befehl chmod go-w ProjectData eingeben. Um allen Benutzern das Hinzufügen einer neuen Datei zu Ordner ProjectData zu verwehren, geben Sie chmod -w ProjectData ein. Nun kann selbst der Eigentümer nicht mehr in die Datei schreiben, ohne zuvor die Schreibberechtigungen wieder einzurichten.

Ändern von Eigentumsberechtigungen

Weitere wichtige Befehle für das Steuern von Eigentümerschaft und Berechtigungen der Dateisystemkomponenten sind chown (change owner (Eigentümer ändern)) und chgrp (change group (Gruppe ändern)). Mithilfe des Befehls chown kann die Eigentümerschaft einer Datei auf einen anderen Benutzer übertragen werden. Diese Änderung darf jedoch nur von Benutzer root vorgenommen werden.

Angenommen, die Datei Roadmap aus Beispiel 3.2, „Beispielausgabe mit Verzeichnisberechtigungen“ soll nicht mehr Eigentum von tux, sondern von Benutzer geeko sein. In diesem Fall sollte root chown geeko Roadmap eingeben.

Mit chgrp wird die Gruppeneigentümerschaft der Datei geändert. Der Eigentümer der Datei muss jedoch Mitglied der neuen Gruppe sein. Auf diese Weise kann Benutzer tux aus Beispiel 3.1, „Beispielausgabe mit Dateiberechtigungen“ die Eigentümerschaft der Datei ProjectData in project4 ändern (mithilfe des Befehls chgrp project4 ProjectData), wenn er Mitglied dieser neuen Gruppe ist.