Benutzer erstellen in der Kommando-Zeile

Wer kennt es nicht? Man arbeitet an einem Server und muss für einen Dienst einen neuen Benutzer anlegen.

Und schon geht es los: Soll der neue Benutzer ein Home-Verzeichnis bekommen?
Wenn ja, unter dem Standardnamen oder lieber unter einem anderen?
Welche Shell soll zugewiesen werden?
Und vielleicht soll es aus Sicherheitsgründen diesmal keine Login-Shell sein?
Braucht der Benutzer Sudo-Rechte, oder ist er ein einfacher Systembenutzer?
 
Eigentlich eine simple Aufgabe, aber dennoch gibt es einige wichtige Überlegungen, die man nicht außer acht lassen sollte.

Benutzer erstellen

Wer den Befehl useradd verwendet, sollte einige Dinge beachten:
 
$> sudo useradd testuser
Ohne zusätzliche Optionen oder Angaben wird ein Benutzer ohne Home-Verzeichnis erstellt. Je nach System erhält der Benutzer entweder eine Standard-Shell oder eben keine. Positiv ist jedoch: Eine Gruppe, die zum Benutzernamen passt, wird automatisch erstellt.
Um herauszufinden, mit welchen Optionen der Benutzer angelegt wurde, kann man die Datei /etc/passwd einsehen:
$> grep testuser /etc/passwd
Dies zeigt die Details des Benutzers, einschließlich der zugewiesenen Shell und Gruppen.

 

Gut zu wissen, aber …
Der angelegte Benutzer ist jedoch noch nicht besonders nützlich. In den meisten Fällen sind die Anforderungen an einen Benutzer viel vielfältiger. Ein Benutzer braucht oft ein Home-Verzeichnis, eine bestimmte Shell und gegebenenfalls Sudo-Rechte, um Aufgaben auszuführen. Die Standardoptionen von useradd sind in der Regel nicht ausreichend, um die typischen Anforderungen zu erfüllen.

Ein bisschen Theorie…

Wenn man einen echten System-Benutzer erstellt, sollte man sich folgende Fragen stellen:

Mit oder ohne Home-Verzeichnis?

Ein Home-Verzeichnis bietet dem Benutzer eine Art «Heimat», in der er ohne die Rechte anderer Benutzer agieren kann – mehr jedoch nicht. Es ist der Platz, an dem der Benutzer seine persönlichen Dateien und Konfigurationen speichern kann.

Standardmäßig wird das Home-Verzeichnis mit dem gleichen Namen wie der Benutzer erstellt. Es ist jedoch auch möglich, einen anderen Namen oder Pfad für das Home-Verzeichnis zu wählen. In diesem Fall müssen die entsprechenden Berechtigungen für diesen Ordner manuell gesetzt werden. Wird das Verzeichnis jedoch automatisch mit dem Benutzernamen erstellt, entfällt dies, da die Berechtigungen standardmäßig korrekt gesetzt werden.

Welche Shell soll es sein?

Für einen Benutzer, der sich am System anmelden und interaktiv arbeiten soll, wird in der Regel eine Shell benötigt, denn nur über die Shell kann der Benutzer auf das System zugreifen.

Es ist aber auch möglich, einen Benutzer ohne Shell zu erstellen, was vor allem dann sinnvoll ist, wenn der Benutzer keine Login-Möglichkeit haben soll. Fakt ist: Ohne eine Shell kann sich der Benutzer nicht einloggen.
Falls du dennoch einen Benutzer mit beschränkten Shell-Rechten erstellen möchtest (um beispielsweise ein eingeschränktes Arbeitsumfeld zu schaffen), gibt es restriktive Shells wie rbash (Restricted Bash) oder du kannst mit $> bash -r eine ähnliche Funktionalität erzielen.

 

Benutzer mit Ablaufdatum

Es ist möglich, einen Benutzer anzulegen, dessen Account nach einer bestimmten Zeit abläuft. Ebenso kann ein Benutzeraccount nach Ablauf des Passworts automatisch gesperrt werden. Dies ist eine Stilfrage und hängt von der beabsichtigten Systemkonfiguration ab.

Ein Hinweis: Eine Non-Login-Shell zusammen mit einem Ablauf-Passwort zu kombinieren, ist in den meisten Fällen wenig sinnvoll, da der Benutzer ohnehin nicht einloggen kann.
 

Benutzer-IDs (UID) und Gruppen-IDs (GID)

Standardmäßig wird jedem Benutzer eine UID (Benutzer-ID) zugewiesen. In Systemen, die LDAP (Lightweight Directory Access Protocol) verwenden, müssen UIDs und GIDs oft manuell vergeben werden – dies kommt jedoch nicht allzu häufig vor.

Für Systeme, die LDAP verwenden, empfiehlt es sich, UIDs und GIDs ab 10000 zu vergeben. Auf diese Weise kann das lokale System den Bereich von UID 1000 bis 9999 für seine eigenen Benutzer verwenden, ohne Konflikte mit der zentralen LDAP-Datenbank zu riskieren.

Das Passwort

Das Passwort eines Benutzers wird unabhängig von der Erstellung des Accounts gesetzt. Erst wenn das Passwort vergeben wurde, kann sich der Benutzer mit seinem Account einloggen. Ein Account ohne Passwort bleibt gesperrt, bis ein Passwort vergeben wird.

Beispiele

Benutzer mit eigenem Home-Verzeichnis erstellen. Der Name der Users wird namensgeber des Verzeichnis-Ordners. Üblicherweise unter /home/.
$> sudo useradd -m meinuser
$> sudo useradd --create-home meinuser
 
Möchte man dem User ein Home-Verzeichnis geben, aber unter anderen Namen, dann geschieht das so:
$> sudo useradd -m  -d /pfad/zum/home meinuser
$> sudo useradd --create-home --home-dir /pfad/zum/home meinuser
 
Um herauszufinden, mit welchen Optionen der Benutzer angelegt wurde, kann man die Datei /etc/passwd einsehen:
$> cat /etc/passwd | grep meinuser
Um den User zu aktivieren muss ein Passwort zu gesetzt werden:
$> passwd meinuser
 
Sollte man viele Nutzer haben kann man diese mit einem Kommentar versehen und auch Default-Daten aus einem Verzeichnis darin kopieren:
$> sudo useradd -m -c "Testuser" -k /etc/skel meinuser
$> sudo useradd --create-home --comment "Testuser" --skel /etc/skel meinuser
 
Benutzer erstellen und eine entsprechende Shell zuweisen, in diesem Fall eine restricted BASH-Shell:
$> sudo useradd -m -s /bin/rbash meinuser
$> sudo useradd --create-home --shell /bin/rbash meinuser
 
Um zu erfahren, welche Shells auf einem Server installiert sind, kann man die Datei /etc/shells abfragen:
$> cat /etc/shells
Um alle Optionen für useradd abzurufen:
$> man useradd
 
Sollte man trotzdem einmal einen User haben, den es zu entfernen gilt, so tut man dies auf diese Weises. Jedoch bleibt dann das Home-Verzeichnis erhalten.
$> userdel meinuser
 
Um den Benutzer komplett zu entfernen, inklusive Home, Spool und Mail-Ordner dann mit Option –remove:
$> userdel -r meinuser
$> userdel --remove meinuser