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.
Alle vorgestellten Befehle und Kommandos erfordern root-Rechte. Bevor wir uns den einzelnen Programmen zur Benutzerverwaltung zuwenden, werfen wir einen Blick in die entsprechenden Konfigurationsdateien und erklären deren Aufbau. Grundsätzlich führen die folgenden Schritte zu einem neuen Account:
/etc eintragen/etc/skel in das neue Home-Verzeichnis kopierenchown und chgrp die Rechte für das neue /home anpassen
Um einen neuen User von Hand anzulegen, editieren Sie zunächst /etc/passwd, die zentrale Datei zur Verwaltung von User-Daten unter Unix, mit Ihrem Lieblings-Editor. Auf älteren Systemen befanden sich die Passwörter der einzelnen Benutzer in dieser Datei; heute werden diese nach /etc/shadow ausgelagert. Die einzelnen Zeilen dieser Textdatei bestehen aus verschiedenen "Feldern", jeweils durch einen Doppelpunkt voneinander abgetrennt:
username:password:UID:GID:additionalInfo:home:shell
Im Klartext bedeutet das:
x – ein Hinweis, dass das Passwort in einer anderen Datei gespeichert ist (/etc/shadow).root hat die 0, alle anderen Zahlen dürfen frei gewählt werden, wobei 1-99 typischerweise für System-Accounts reserviert sind./etc/shadow)./home/username./bin/bash oder ähnliches.
Bevor Sie hier einen neuen User eintragen, sollten Sie überlegen, welche UserID vergeben wird und welcher Gruppe er standardmäßig angehören soll. Die UID muss für jeden Benutzer eindeutig sein, die GID mit einer Gruppe aus /etc/group übereinstimmen. In der Regel wird einfach die Zahl der Gruppe users übernommen (auch wenn es möglich ist, eine neue Gruppe in /etc/group anzulegen):
asteroid:~# less /etc/group […] users:x:100:
Gesetzt den Fall, es soll ein neuer Benutzer namens petronella angelegt und Mitglied in der Gruppe users werden, sieht der Eintrag so aus:
petronella:x:501:100:Testhuhn:/home/petronella/:/bin/bash
Wenn der neue Benutzer auch anderen Gruppen angehören soll, muss seine UID in /etc/group bei den entsprechenden Gruppen hinzugefügt werden, z. B.:
audio:x:29:huhn,easter,petronella
Auf den meisten Systemen werden Shadow-Passwörter verwendet, daher gehört ein zusätzlicher Eintrag in die Datei /etc/shadow. Auch dort gibt es durch Doppelpunkte getrennte Felder:
username:password:age:min_age:max_age:warning:buffer:invalid:other
Die Felder haben folgende Bedeutung:
*
username: Der Benutzername, siehe /etc/passwd.
@L: *, gibt es kein gültiges Passwort, mit dem sich der User einloggen könnte; dieses wird häufig für "Verwaltungs-User" eingetragen, wie z. B. daemon, bin oder lp.
Die beiden ersten Einträge (username und password) müssen vorhanden sein, die anderen sind optional. Der neue Eintrag für den User "petronella" in der /etc/shadow sieht also so aus:
petronella:!:::::::
Im zweiten Feld, wo im Moment noch als Platzhalter ! steht (aus Sicherheitsgründen bleibt das Feld niemals leer), sollte normalerweise ein encryptetes Passwort sein. Als root führen Sie deshalb nun anschließend das Kommando passwd aus:
asteroid:~# passwd petronella Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Anschließend geben Sie dem neuen Benutzer ein Home-Verzeichnis und kopieren optional einige Startdateien dorthin:
asteroid:~# mkdir /home/petronella asteroid:~# cp -v /etc/skel/.* /home/petronella /etc/skel/.alias -> /home/petronella/.alias /etc/skel/.bash_logout -> /home/petronella/.bash_logout /etc/skel/.bash_profile -> /home/petronella/.bash_profile /etc/skel/.bashrc -> /home/petronella/.bashrc /etc/skel/.cshrc -> /home/petronella/.cshrc
Damit dem neuen Benutzer sein neues Zuhause auch gehört, passen Sie die Rechte in dem Verzeichnis an:
asteroid:~# chown petronella /home/petronella/.* asteroid:~# chgrp users /home/petronella/.*
Mit den Tools useradd, userdel und usermod kommen praktische Kommandozeilenhelfer, die Ihnen die aufwendige Editierarbeit abnehmen. Das Programm useradd legt, wie der Name vermuten lässt, einen neuen Benutzer-Account an. Der einfache Aufruf gibt eine Übersicht über die wichtigsten Parameter:
asteroid:~# useradd
usage: useradd [-u uid [-o]] [-g group] [-G group,…]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] name
useradd -D [-g group] [-b base] [-s shell]
[-f inactive] [-e expire ]
Das Programm können Sie auf zwei verschiedene Weisen einsetzen: Entweder geben Sie über einzelne Optionen die neue UID, GID, das neue Home-Verzeichnis, etc. an, oder Sie definieren über den Parameter -D Default-Einstellungen, welche vom Kommando dann abgearbeitet werden. Schauen Sie sich zunächst die Einzelparameter an. Mit -u bestimmen Sie die UID. Sollten Sie aus Versehen eine bereits vergebene Zahl angeben, bricht das Programm mit der Fehlermeldung: useradd: uid 100 is not unique.
Mit der Option -g wird eine primäre GID für den Benutzer vergeben; weitere Gruppen fügen Sie über -G GID2,GID3... durch Kommata getrennt hinzu. Das Home-Verzeichnis geben Sie mit -d /home/username an, die Standard-Shell z. B. mit -s /bin/bash. Damit das Home-Verzeichnis auch angelegt wird, setzen Sie noch die Option -m. Dabei werden standardmäßig auch die Dateien aus /etc/skel ins neue /home kopiert. Der Parameter -c setzt den Namen des Users (was in der /etc/passwd im Feld additionalInfo steht). Soll dieser aus mehreren Wörtern bestehen, muss er in Anführungszeichen übergeben werden. Sollte bereits ein encryptetes Passwort für den Benutzer existieren, darf dieses mit -p crypt_pw gesetzt werden. Der vollständige Aufruf lautet also:
asteroid:~# useradd -u 501 -g 100 -d /home/petronella -m -s /bin/bash -c"Test-User petronella"
Werfen Sie einen Blick in die entsprechenden Konfigurationsdateien und sehen, ob alles richtig gesetzt ist. Die /etc/shadow enthält an der Stelle, wo das Passwort steht, wieder den Platzhalter !. Daher kommt nun wieder das Programm passwd zum Einsatz.
Viel schneller arbeitet useradd mit den Default-Einstellungen. Schauen Sie sich diese mit dem Parameter -D an:
asteroid:~# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel
Soll diesem Standard gefolgt werden, reicht ein einfaches useradd petronella aus; auf dem Parameter -m darf aber auch hier nicht verzichtet werden, soll das Home-Verzeichnis tatsächlich angelegt werden. Die Default-Konfiguration lässt sich selbstverständlich ändern; useradd -D -g GID ändert die Standardgruppe, useradd -D -b das Default-Home-Verzeichnis und useradd -D -s die Standard-Shell.
Sollte nach dem Anlegen des neuen Benutzers eine Einstellung nicht korrekt sein und ein bestehender Account modifiziert werden müssen, kommt usermod ins Spiel. Es hat die gleichen Optionen (mit der gleichen Funktionsweise) wie useradd.
Das dritte Programm aus dieser Runde heißt userdel und ist für das Löschen von Benutzer-Accounts zuständig. Einzige Voraussetzung ist, dass der User nicht eingeloggt ist; ebenso müssen Prozesse des Benutzers gelöscht werden, bevor userdel zum Einsatz kommt. Einziger Parameter ist -r; dieser entfernt zusätzlich zum Account auch das Home-Verzeichnis mit allen enthaltenen Dateien.
Auf Debian-Systemen und auf älteren Linux-Distributionen gibt es ein Perl-Script namens adduser. Interaktiv hilft es beim Anlegen eines neuen Benutzers, fragt Schritt für Schritt die neuen Daten ab und fügt dabei die entsprechenden Einträge in die Konfigurationsdateien ein. In der aktuellen Version 3.47 ist es auch bei Debian Woody mit von der Partie. Den Source-Code finden Sie unter http://ftp.debian.org/debian/pool/main/a/adduser/adduser_3.47.tar.gz; Debianer installieren das Werkzeug mit apt-get install adduser.
Glossar
Shadow-Passwörter
erhöhen die Sicherheit auf dem System, indem sie in der Datei /etc/shadow abgelegt werden, die nur vom Benutzer root gelesen werden kann. Zusätzlich bieten sie Informationen darüber, wann ein Passwort das letzte Mal geändert wurde, sowie eine Kontrolle, wann es das nächste Mal geändert werden muss.
passwd
Mit diesem Kommando kann jeder User sein eigenes Passwort (und root darüberhinaus das aller User) ändern. Als "normaler" Benutzer werden Sie nach Eingabe des Befehls zunächst nach dem alten Passwort gefragt bevor Sie ein neues wählen dürfen – ein Schutzmechanismus, der (falls doch einmal eine Konsole unbeaufsichtigt offen gelassen wurde) verhindert, dass andere User sich Zugriffsrechte verschaffen. Der Superuser root darf auch fremde Passwörter ändern. Dazu setzt man hinter den Befehl passwd den Benutzernamen. Hier wird nicht nach dem alten Passwort gefragt. So kann ein Systemverwalter einem User, der sein Passwort vergessen hat, ein neues setzen.