Server-Administration

Benutzerverwaltung unter Linux

Linux ist ein Multi-Tasking- und Multi-User-Betriebssystem. Somit können mehrere Benutzer die vorhandenen Ressourcen wie Prozessoren, Netzwerk, Arbeitsspeicher und Festplatten parallel nutzen. Wir zeigen Ihnen, wie Sie Benutzer mit Gruppen und Verzeichnisdiensten verwalten.

Spätestens beim sogenannten Login von Linux wird der Benutzer aufgefordert, seinen Benutzernamen und sein Passwort zur Authentifizierung einzugeben. Der Linux-Kernel verifiziert mit diesen Angaben, welche Rechte ein vom Benutzer gestarteter Prozess im System und auf Dateisystemebene hat (Autorisierung).

Linux verwendet, wie jedes andere Unix-Betriebssystem auch, Benutzer- (User-) und Gruppen-Identifikationen für die Rechtekontrolle. Jede Datei und jedes Verzeichnis im Dateisystem verfügt über Besitz- und Zugriffsrechte. Letztere bestimmen, welche Rechte ein Systembenutzer für das Objekt hat. Einfache Zugriffsrechte sind Lesen, Schreiben und Ausführen. Diese werden drei Klassen von Nutzern zugeordnet:

  • dem Eigentümer/Besitzer der Datei (User);

  • dem Prozess in einer Prozessgruppe (Group);

  • allen Prozessen im System (others).

Jede Klasse kann unterschiedliche Zugriffsrechte besitzen; beispielsweise kann der Besitzer einer Datei diese lesen und schreiben, die Dateigruppe kann nur lesen, und alle anderen Prozesse haben keinen Zugriff darauf. Zuständig für das Setzen der Zugriffsrechte sind die Systemaufrufe "chmod" oder "fchmod" und der Kommandozeilenaufruf "chmod". Beispielsweise setzt "chmod u=rw,g=r,o-a myfile" oder octal "chmod 640 myfile" genau diese Rechte. Access Control Lists (ACL) sind weitergehende Zugriffsrechte und erlauben eine feiner granulierte Rechtesteuerung.

Der Kernel markiert jeden auszuführenden Prozess mit der numerisch eindeutigen ID des Benutzers (UID) und seiner Gruppen (GIDs). Lediglich die UID und die GID mit dem Wert null werden vom Kernel besonders behandelt, denn diese beiden Werte sind dem Systemadministrator - besser bekannt als "root" - vorbehalten. Der root-User ist im klassischen System meist im Besitz aller Rechte. Als bedingte Abfrage in der Programmiersprache C lässt sich dies als "if (uid ==0) .." oder kürzer "if (!uid) .." implementieren.