27.2. Benutzer und Zugriffsberechtigungen

Seit den Anfängen, also Anfang 1990, wurde Linux als Mehrbenutzersystem entwickelt. Es kann also von mehreren Benutzern gleichzeitig verwendet 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. Benutzer, die dieses Konzept stets im Hinterkopf behalten und sich nur dann als Benutzer root mit uneingeschränkten Rechten anmelden, wenn dies erforderlich ist, können dazu beitragen, dass Risiko versehentlicher Datenverluste gering zu halten. Da unter normalen Umständen nur root Systemdateien löschen oder Festplatten formatieren kann, kann die Bedrohung durch ein Trojanisches Pferd bzw. durch die versehentliche Eingabe zerstörender Befehle deutlich verringert werden.

27.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 27.1, „Beispielausgabe mit Dateiberechtigungen“ aus.

Beispiel 27.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. Hintergrundinformationen hierzu finden Sie unter Abschnitt 27.2.6, „Zugriffssteuerungslisten“.

Verzeichnisberechtigungen

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

Beispiel 27.2. Beispielausgabe mit Verzeichnisberechtigungen

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

In Beispiel 27.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 Mitglieder 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).

27.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 27.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 27.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 27.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.

27.2.3. setuid-Bit

In bestimmten Situationen sind die Zugriffsberechtigungen möglicherweise zu streng. Deshalb weist Linux zusätzliche Einstellungen auf, die das vorübergehende Ändern der aktuellen Benutzer- und Gruppenidentität für eine bestimmte Aktion ermöglichen. Für das passwd-Programm sind beispielsweise im Regelfall root-Berechtigungen für den Zugriff auf /etc/passwd erforderlich. Diese Datei enthält wichtige Informationen, beispielsweise die Home-Verzeichnisse von Benutzern sowie Benutzer- und Gruppen-IDs. Folglich ist es einem normalen Benutzer im Regelfall nicht möglich, passwd zu ändern, da es zu gefährlich wäre, allen Benutzern den direkten Zugriff auf diese Datei zu gewähren. Eine mögliche Lösung dieses Problems stellt der setuid-Mechanismus dar. setuid (set user ID (Benutzer-ID festlegen) ist ein spezielles Dateiattribut, das das System zum Ausführen entsprechend markierter Programme unter einer bestimmten Benutzer-ID veranlasst. Betrachten wir einmal den passwd-Befehl:

-rwsr-xr-x  1 root shadow 80036 2004-10-02 11:08 /usr/bin/passwd

Sie sehen das s, das angibt, dass das setuid-Bit für die Benutzerberechtigung festgelegt ist. Durch das setuid-Bit führen alle Benutzer, die den passwd-Befehl aufrufen, den entsprechenden Vorgang als root aus.

27.2.4. setgid-Bit

Das setuid-Bit gilt für Benutzer. Es gibt jedoch eine entsprechende Eigenschaft für Gruppen, nämlich das setgid-Bit. Ein Programm, für das dieses Bit festgelegt wurde, wird unter der Gruppen-ID ausgeführt, unter der es gespeichert wurde, unabhängig davon, von welchem Benutzer es gestartet wird. Folglich werden in einem Verzeichnis mit dem setgid-Bit alle neu erstellten Dateien und Unterverzeichnisse der Gruppe zugewiesen, der das Verzeichnis zugehörig ist. Betrachten wir einmal folgendes Beispielverzeichnis:

drwxrws--- 2 tux archive 48 Nov 19 17:12 backup

Sie sehen das s, das angibt, dass das setgid-Bit für die Gruppenberechtigung festgelegt ist. Der Eigentümer des Verzeichnisses sowie Mitglieder der Gruppe archive dürfen auf dieses Verzeichnis zugreifen. Benutzer, die nicht Mitglied dieser Gruppe sind, werden der entsprechenden Gruppe „zugeordnet“. archive ist die Gruppen-ID für alle geschriebenen Dateien. Ein mit der Gruppen-ID archive ausgeführtes Sicherungsprogramm kann auch ohne root-Berechtigungen auf dieses Verzeichnis zugreifen.

27.2.5. sticky-Bit

Außerdem gibt es das sticky-Bit. Es macht einen Unterschied. ob es einem ausführbaren Programm oder einem Verzeichnis zugehörig ist. Wenn es einem Programm zugehörig ist, wird eine auf diese Weise markierte Datei in den RAM geladen; auf diese Weise muss sie nicht bei jeder Verwendung von der Festplatte abgerufen werden. Dieses Attribut kommt selten zum Einsatz, da moderne Festplatten schnell genug sind. Wenn dieses Bit einem Verzeichnis zugewiesen ist, hindert es einen Benutzer daran, Dateien eines anderen Benutzers zu löschen. Zu den typischen Beispielen zählen die Verzeichnisse /tmp und /var/tmp:

drwxrwxrwt   2 root  root   1160 2002-11-19 17:15 /tmp 

27.2.6. Zugriffssteuerungslisten

Das traditionelle Berechtigungskonzept für Linux-Dateisystemobjekte, beispielsweise Dateien oder Verzeichnisse, kann durch Zugriffssteuerungslisten (Access Control Lists, ACLs) erweitert werden. Sie ermöglichen es, einzelnen Benutzern oder Gruppen, bei denen es sich nicht um den ursprünglichen Eigentümer oder die ursprüngliche Eigentümergruppe eines Dateisystemobjekts handelt, Berechtigungen zuzuweisen.

Dateien oder Verzeichnisse mit erweiterten Zugriffsberechtigungen können mithilfe eines einfachen ls -l-Befehls ermittelt werden:

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

Roadmap ist Eigentum von tux, der der Gruppe project3 zugehörig ist. tux verfügt sowohl über Schreib- als auch Lesezugriff für diese Datei. Die Gruppe und alle anderen Benutzer verfügen über Lesezugriff. Diese Datei unterscheidet sich nur darin von einer Datei ohne ACL, dass die Spalte mit dem Berechtigungs-Bits ein zusätzliches + enthält.

Details zur ACL erhalten Sie, wenn Sie getfacl Roadmap ausführen:

# file: Roadmap 
# owner: tux 
# group: project3 user::rw- user:
jane:rw-       effective: r-- 
group::r-- 
group:djungle:rw-   effective: r-- 
mask::r-- 
other::---

Die ersten drei Zeilen der Ausgabe enthalten keine Informationen, die nicht auch mit ls -l abgerufen werden können. Aus diesen Zeilen gehen lediglich Dateiname, Eigentümer und Eigentümergruppe hervor. Die Zeilen 4 bis 9 enthalten die ACL-Einträge. Konventionelle Zugriffsberechtigungen stellen eine Teilmenge der bei der Verwendung von ACLs möglichen Berechtigungen dar. Die Beispiel-ACL gewährt sowohl dem Eigentümer der Datei als auch Benutzer jane Lese- und Schreibzugriff (Zeile 4 und 5). Das konventionelle Konzept wurde erweitert, um einem zusätzlichen Benutzer den Zugriff zu ermöglichen. Dies gilt auch für die Handhabung des Gruppenzugriffs. Die Eigentümergruppe verfügt über Leseberechtigungen (Zeile 6) und die Gruppe djungle verfügt über Lese- und Schreibberechtigungen. Durch den mask-Eintrag in Zeile 8 werden gültige Berechtigungen für Benutzer jane und Gruppe djungle auf Lesezugriff zurückgestuft. Andere Benutzer und Gruppen dürfen überhaupt nicht auf die Datei zugreifen (Zeile 9).

An dieser Stelle wurden nur sehr grundlegende Informationen bereitgestellt. Detailliertere Informationen zu ACLs finden Sie unter Kapitel 24, Zugriffssteuerungslisten unter Linux.