Linux ist ein Multiuser-System: Mehrere Benutzer nutzen gleichzeitig den selben Rechner, und für verschiedene Aufgaben richtet man separate Accounts ein. Diese Zu-Befehl-Folge stellt die Kommandos für die Zugangsverwaltung vor.
Zu Befehl
Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder Gnome regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
Multiuser-Systeme trennen die Arbeitsbereiche einzelner Benutzer sauber: So sichern Sie eigene Daten, indem Sie Zugriffsrechte passend setzen. Auch die Unix-/Linux-typische Angewohnheit, einen eigenen Zugang für Administrationsaufgaben (root) zu haben, ist vorteilhaft: Fehler, die das gesamte System lahmlegen können, werden so weitestgehend vermieden.
Der Systemverwalter Root ist Herr im Haus – alle hier vorgestellten Kommandos zur Einrichtung und Verwaltung von Benutzerzugängen können Sie nur mit Administratorrechten durchführen. Nach der Vorstellung der wichtigsten Konfigurationsdateien geht es ans Eingemachte: Mit den Programmen useradd, usermod und userdel erstellen, bearbeiten und löschen Sie Accounts.
Viele Benutzer
Welche Benutzerzugänge es auf Ihrem System gibt, verrät ein Blick in die Datei /etc/passwd (Abbildung 1). Neben den “echten” Accounts sehen Sie hier auch Einträge für Benutzer wie lp oder mail: Das sind so genannte Pseudo-User, die das System angelegt hat, um bestimmten Systemdienstprozessen gezielt Rechte an bestimmten Dateien und Verzeichnissen zu geben. Generell haben die Einträge in /etc/passwd die Form:
petronella:x:1002:1002:Petronella Huhn,,,,Test-Account:/home/petronella:/bin/bash
In den Feldern, die durch Doppelpunkte voneinander abgetrennt sind, finden Sie die folgenden Angaben:
- User-Name: Der Name, mit dem sich der Benutzer am System anmeldet.
- Passwort: Auf den meisten Systemen finden Sie hier ein
x– ein Hinweis, dass das Kennwort in die Datei/etc/shadowausgelagert wurde. (Früher stand an dieser Stelle das verschlüsselte Passwort.) Ist das Feld leer, ist die Anmeldung ohne Passwortabfrage möglich. - UID: Jeder Benutzer ist unter Linux eindeutig über eine Nummer, die UID (“User Identification”), identifizierbar; der Administrator Root hat die 0; 1 bis 99 sind typischerweise für System-Accounts reserviert.
- GID: Jeder Benutzer ist Mitglied einer oder mehrerer Gruppen, die über so genannte GIDs (“Group Identification”) identifiziert werden.
- Zusätzliche Information: Eine genauere Beschreibung des Benutzers, die aus mehreren Worten bestehen darf (oft steht hier der Vor- und Zuname, die Telefon- oder Zimmernummer).
- Home-Verzeichnis: Bei “normalen” Benutzern meistens
/home/username, bei Pseudo-Usern steht hier oft ein Arbeitsverzeichnis (z. B. für den Drucker-Daemon – Benutzerlp– das Verzeichnis/var/spool/lpd). - Shell: Der zu startende Kommandozeileninterpreter, wenn der Benutzer sich am System anmeldet (meistens
/bin/bash).
Passwort im Schatten
Wie schon erwähnt, setzen moderne Systeme meist Shadow-Passwörter ein. Dies erhöht die Sicherheit u. a. dadurch, dass die verschlüsselten Einträge nicht mehr in der für alle Anwender lesbaren Datei /etc/passwd, sondern in der Datei /etc/shadow stehen, die nur der Administrator lesen kann. Ein weiterer Vorteil von Shadow-Passwörtern ist, dass sie Informationen über die letzte Änderung des Kennwortes und einen Kontrollmechanismus zur Passwort-Änderung bieten.
Auch die Zeilen in /etc/shadow enthalten durch Doppelpunkte getrennte Felder. Im Einzelnen kann man dort die folgenden Angaben unterbringen:
- User-Name: Der Benutzername (wie bei
/etc/passwd). - Passwort: Hier steht das verschlüsselte Passwort. Dieses Feld darf nicht leer bleiben, daher steht für die Pseudo-Benutzer wie
lpan dieser Stelle ein Sternchen “*”. Um einen Zugang vorübergehend zu sperren, kann ein Ausrufezeichen vorangestellt werden. - Letzte Änderung: Hier steht Datum der letzten Passwortänderung – gemessen in Tagen seit dem 01.01.1970.
- Mindestalter / Maximalalter: Wie alt das Passwort werden muss und darf, bevor der Benutzer es ändern kann bzw. muss.
- Warnung: Wieviele Tage vor Ablauf des Passworts wird der User gewarnt?
- Puffer: Wieviel Spielraum nach Ablauf des Passworts bleibt, bis der Account wirklich gesperrt wird.
- Gültigkeit: Datum, an dem das Passwort abläuft (angegeben in Tagen ab dem 01.01.1970).
- Frei: Das letzte Feld ist reserviert.
Beachten Sie, dass lediglich die ersten beiden Einträge zum Benutzernamen und zum Kennwort vorhanden sein müssen; die restlichen Felder sind optional. Ein Beispieleintrag könnte also so aussehen:
petronella:$1$RXbNLkU8$XULLOGFVs6LTxmSRqCS.P/:12872:0:99999:7:::
Das Grundgerüst
Beim Erstellen eines Accounts ist es sinnvoll, dem neuen Benutzer ein paar grundlegende Dinge mitzugeben: Neben dem Anlegen eines eigenen Home-Verzeichnisses kann es sinnvoll sein, dort direkt ein paar Konfigurationsdateien (z. B. für die Shell) abzulegen. Auf den meisten Systemen finden Sie ein solches “Grundgerüst” im Verzeichnis /etc/skel (wie englisch “skeleton”).
Während dort bei Debian Linux lediglich einige versteckte Konfigurationsdateien (beispielsweise für die verschiedenen Shells) liegen, legt Suse Linux gleich mehrere Dateien und Ordner an. Die meisten Programme, die beim Anlegen neuer Benutzer helfen, kopieren automatisch den Inhalt von /etc/skel in das Home-Verzeichnis des neuen Benutzers (Abbildung 2) und passen die Zugriffsrechte an.
Legen Sie einen neuen Benutzerzugang von Hand über die Dateien /etc/passwd und /etc/shadow an, sollten Sie ebenfalls ein neues Home-Verzeichnis erstellen, den Inhalt des Skeleton-Verzeichnisses dorthin kopieren und die Rechte setzen:
mkdir /home/newuser cp -r /etc/skel /home/newuser chown -R newuser:users /home/newuser
Achten Sie darauf, dass Sie den Befehlen cp und chown die Optionen -r zum rekursiven Kopieren bzw. -R zur rekursiven Rechteänderung mitgeben, damit Sie Unterverzeichnisse in /etc/skel mit erfassen.
Die Angabe users ist bei den meisten Distributionen die Standardgruppe neuer Benutzer; wenn das bei Ihnen anders ist, ersetzen Sie users durch die richtige Gruppe.

Abbildung 2: Suses YaST erstellt automatisch ein neues Home-Verzeichnis und kopiert Daten aus “/etc/skel”.
Explizit mit “useradd”
Wem das Anlegen neuer Benutzer von Hand zu unübersichtlich oder aufwendig ist, der hat mit useradd ein schnelles Kommandozeilen-Tool zur Hand. Die verschiedenen Linux-Distributionen installieren Versionen mit teilweise unterschiedlichen Parametern. Wo das im Folgenden relevant ist, weist der Artikel ausdrücklich darauf hin. Eine Übersicht aller Parameter erhalten Sie mit useradd oder useradd --help.
Für einen neuen Account benötigen Sie eine User Identification (UID), die Sie über -u UID definieren. Achten Sie darauf, dass jeder Benutzer eine eigene UID besitzt – sollten Sie aus Versehen eine bereits vergebene Nummer angeben, beschwert sich useradd. Lassen Sie diese Angabe weg, sucht useradd automatisch die größte schon vergebene ID und erhöht diesen Wert um 1.
Weiterhin übergeben Sie dem Tool mit der Option -g eine primäre GID; weitere Gruppen, in denen der Benutzer Mitglied sein soll, geben Sie über den Parameter -G und Aufzählung der entsprechenden Gruppennummern an. Welche Gruppen es auf Ihrem System gibt und welche GIDs diese haben, lesen Sie in der Datei /etc/group nach. Soll der neue Account beispielsweise zur Gruppe users (z. B. GID 100) gehören und zusätzlich Mitglied der Gruppe cdrom mit der GID 24 sein, lauten die Angaben -g 100 -G 24.
Standardmäßig wählt useradd ein Home-Verzeichnis passend zum angegebenen Benutzernamen aus. Wollen Sie explizit ein anderes Verzeichnis zum Zuhause des neuen Nutzers erklären, erledigen Sie das über -d Verzeichnis. Mit dem Parameter -m teilen Sie useradd mit, dass er das Home-Verzeichnis anlegen soll, falls es noch nicht existiert, und dass das Grundgerüst aus /etc/skel dorthin wandern soll. Mit der Option -c setzen Sie zusätzliche Informationen für den neuen User – enthält diese Angabe Leerzeichen, müssen Sie den Block in Anführungszeichen einschließen. Ein vollständiger Aufruf könnte beispielsweise so aussehen:
useradd peggy -u 501 -g 100 -m -s /bin/bash -c "Peggy Gans"
Anschließend setzen Sie mit passwd peggy das Passwort für den neuen Benutzer.
Alles Standard
Über Default-Einstellungen können Sie mit useradd noch schneller arbeiten: In diesen sind u. a. Angaben zur Gruppe, zum Home-Verzeichnis und zum Grundgerüst enthalten, so dass Sie diese im normalen Kommandozeilenaufruf weglassen können, wenn Sie den Standardeinstellungen folgen wollen.
Was für useradd als Standard konfiguriert ist, finden Sie unter Debian Linux und Fedora Core über die Option -D heraus:
debian# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL= SKEL=/etc/skel
Bei Suse Linux 9.2 heißt die Option --show-defaults. Suse verwaltet in den Vorgaben auch weitere Gruppen, in denen der neue Account standardmäßig Mitglied wird:
suse# useradd --show-defaults … GROUPS=video,dialout
Soll useradd diese Standardeinstellungen für einen neuen Zugang verwenden, reicht ein einfaches useradd <neuer_account> aus – zum Anlegen des passenden Home-Verzeichnisses und Kopieren der in /etc/skel enthaltenen Daten müssen Sie allerdings auf einigen Linux-Distributionen weiterhin den Parameter -m angeben.
Wer diese Default-Einstellungen verändern möchte, kann verschiedene Wege gehen: Sie können mit einem Text-Editor die Datei /etc/default/useradd bearbeiten oder auf der Kommandozeile arbeiten und alle Werte über entsprechende Optionen neu definieren. Dabei gehen die Distributionen wieder separate Wege. Unter Debian und Fedora verändern Sie die Standardeinstellungen für useradd auf der Kommandozeile über den Parameter -D. Wer beispielsweise eine andere Standard-Shell definieren möchte, tippt:
# useradd -D -s -b /bin/csh
Auf die gleiche Weise legen Sie einen neuen Ort für Home-Verzeichnisse (-D -b /home2) oder eine neue Standardgruppe (-D -g 101) fest.
Bei Suse Linux verwenden Sie statt -D die Option --save-defaults. Dabei ist zu beachten, dass diese Funktion nicht mit allen Einstellungen, sondern nur für das Skeleton-Verzeichnis (z. B. --save-defaults -k /etc/my_skel) und die Shell (z. B. --save-defaults -s /bin/csh) funktioniert. Die in der Manpage erwähnten Parameter, z. B. zum Anpassen des Home-Verzeichnisses oder der GIDs, fehlen in den Versionen 2.6.90 (Suse 9.2) und 2.6.96 (Suse 9.3). Eine Lösungsmöglichkeit ist, mit einem Text-Editor die Datei /etc/default/useradd anzupassen.
Einen Account modifizieren
Um die Eigenschaften eines Benutzerzugangs zu verändern, setzen Sie das Programm usermod ein, das ähnlich wie useradd funktioniert und für die meisten Optionen auch die gleichen Parameter verwendet. Um beispielsweise einem Benutzer eine neue Shell zu verpassen, verwenden Sie:
usermod -s /bin/csh huhn
Meldet sich Benutzer huhn das nächste Mal am System an, arbeitet er mit der neuen Shell.
Ein praktisches Feature ist das Sperren von Zugängen mit usermod: Soll ein Account nicht gelöscht, sondern nur (zeitweise) deaktiviert werden, erreichen Sie dieses auf Debian-Systemen über:
usermod -L huhn
Auch hier ist wieder zu beachten, dass die Option unter Suse Linux 9.2 zwar in der Manpage aufgeführt, aber nicht implementiert ist. In der Datei /etc/shadow können Sie an einem Ausrufezeichen vor dem Passworteintrag erkennen, dass die Sperrung erfolgreich war:
huhn:!MjBhdgr.6XkE6:12575:0:99999:7:::
Damit kann sich der Benutzer huhn nicht mehr am System anmelden. Die Sperrung heben Sie über den Befehl
usermod -U huhn
wieder auf.
Auf Nimmerwiedersehen
Genauso schnell wie Benutzer-Accounts anlegen, können Sie diese auch wieder löschen – dazu nutzen Sie das Kommando userdel. Einzige Voraussetzung: Der zu entfernende Benutzer darf nicht mehr eingeloggt sein bzw. keine laufenden Prozesse mehr besitzen. Ist das der Fall, werden Sie den Account über den Aufruf userdel peggy wieder los. Soll dabei auch gleich das Home-Verzeichnis verschwinden, sorgt der Parameter -r dafür, dass userdel auch die persönlichen Daten entfernt.
Fazit
Zwar bieten die meisten Distributionen komfortable grafische Tools für die Benutzerverwaltung, wie so oft geht es auf der Kommandozeile aber schneller. Hat man sich einmal an die Syntax von useradd, usermod und userdel gewöhnt, erledigt man diese Verwaltungsaufgaben in Sekundenschnelle.





