Benutzerverwaltung
 

Linux ist ein Mehrbenutzer-System, d.h. es können mehrere Benutzer über Terminals oder das Netz mit dem System arbeiten. Jeder Benutzer hat unter Linux seine eigenen Dateien und Verzeichnisse, in die andere Benutzer nicht ohne weiteres Einblick nehmen (oder sie gar verändern) dürfen. Diese liegen in der Regel im sogenannten Home-Verzeichnis unter /home. Jeder Benutzer hat dort einen eigenen Ordner mit seinem Benutzernamen, z.B. /home/udo. Ebenso dürfen Benutzer wichtige Systemdateien nicht modifizieren oder manchmal auch nicht einmal anschauen. Dies ist eines der herausragendsten Sicherheitsmerkmale von Linux, da ein Virus der auf das System kommt, automatisch diesselben Rechte wie der angemeldete Benutzer hat, der ihn mitgebracht hat. Da der Virus dann lediglich Benutzer-Rechte hat, kann er an wichtigen Systemdateien nichts verändern!

Jeder Benutzer wird einer primären Gruppe zugeordnet, damit hat jede Datei und jedes Verzeichnis genau einen Besitzer und eine Gruppenzugehörigkeit. Systemintern wird jeder Benutzer eindeutig anhand seiner UID (User ID) identifiziert und die Gruppe anhand der GID (Gruppen ID).

Die zentrale Benutzerdaten-Datei ist die Datei
# /etc/passwd
Jeder Benutzer auf dem System hat einen Eintrag in dieser Datei, bestehend aus einer Zeile in der Attribute wie Benutzername, "richtiger" Name, usw. festgehalten werden. Ein Beispiel:
udo:x:1000:1000:Udo,,,:/home/udo:/bin/bash
Die Einträge haben folgendes Format:
(Benutzername):(Kennwort):(UID):(GID):(GECOS):(Heimatverzeichnis) :(Shell)

Alle Passwörter werden in verschlüsselter Form in der Datei
# /etc/shadow
gespeichert. Das Format der Einträge:
(Benutzername):(Kennwort):(Änderung):(Min):(Max):(Warnung):(Frist) :(Sperre):(Reserviert)
Das Kennwort wird wie gesagt in verschlüsselter Form gespeichert. Ein Stern * oder ein Ausrufungszeichen ! zeigen an, daß es keine Kennwortvergabe gibt (bei imaginären Benutzern), der entsprechende Benutzer kann sich nicht anmelden. Ein leerer Eintrag bedeutet, daß der Benutzer sich ohne Kennwort anmelden kann.
Änderung = das Datum der letzten Änderung des Kennworts, in Tagen seit dem 1. Januar 1970.
Min = Minimale Anzahl von Tagen, die seit der letzten Kennwortänderung vergangen sein müssen, damit das Kennwort wieder geändert werden kann.
Max = Maximale Anzahl von Tagen, die ein Kennwort ohne Änderung gültig bleibt. Nach Ablauf der Frist muß der Benutzer sein Kennwort ändern.
Warnung = Die Anzahl von Tagen vor dem Ablauf der (Max)-Frist, an denen der Benutzer eine Warnung erhält, daß er sein Kennwort bald ändern muß. Die Meldung erscheint in der Regel beim anmelden.
Gnaden-Frist = Die Anzahl von Tagen ausgehend vom Ablauf der (Max)-Frist, nach der das Konto automatisch gesperrt wird. In der Zeit zwischen dem Ende der (Max)-Frist und dem Ende dieser Frist kann der Benutzer sich anmelden, muß aber sofort sein Kennwort ändern.
Sperre = Das Datum, an dem das Konto definitiv gesperrt wird, wieder in Tagen seit dem 1. Januar 1970.


Benutzer anlegen und löschen

Mit dem Befehl useradd werden Benutzer-Konten angelegt. Die einfachste Form um einen Benutzer anzulegen ist die Übergabe des Namens, z.B.
# useradd Benutzername
Allerdings wird bei dieser einfachen Angabe keinerlei Heimatverzeichnis in /home angelegt. Möchte man ein Heimatverzeichnis benötigt man die Option -m:
# useradd -m Benutzername
Um die korrekte Login-Shell auszuwählen, hilft -s:
# useradd -m -s /bin/bash Benutzername
möchte man die primäre Gruppe ändern, die Option -g:
# useradd -m -s /bin/bash -g Gruppe Benutzername
Und möchte man noch einen ausführlichen Namen angeben, kann man das mit -c:
# useradd -m -s /bin/bash -g chef -c "Ich Chef" udo
legt den Benutzer udo an, sein Heimat-Verzeichnis unter /home/udo, seine Login-Shell /bin/bash, fügt ihn der primären Gruppe chef hinzu und gibt ihm den vollständigen Namen "Ich Chef". ;-)

Nach dem Anlegen mit useradd ist das neue Konto noch nicht zugänglich. Der Systemverwalter muß zuerst noch ein Kennwort vergeben. Das macht man mittels des Befehls passwd.
# passwd Benutzername
Geben sie ein neues UNIX-Paßwort ein:

Um einen Benutzer zu löschen hilft folgender Befehl:
# userdel -r Benutzername
Die Option -r löscht auch das Heimatverzeichnis samt Inhalt, sowie seine Mailbox in /var/mail.


Benutzerkonten verändern

Zum nachträglichen Verändern von User-Konten gibt es den Befehl usermod, z.B.:
# usermod -l NEUERNAME ALTERNAME
Option -l (kleines L) benennt den Benutzer um. Achtung! Dazu muß der Benutzer vom System abgemeldet sein!

Möchte man nicht nur den Namen ändern, sondern das ganze System auf den neuen Benutzer umstellen, sollte man folgendermaßen vorgehen:

  • Zuerst sollte man den Benutzer vom System abmelden.
  • Anschließend benennt man ihn mittels
    # usermod -l NEUERNAME ALTERNAME
    um.
  • Den vollständigen Namen ändern man mit:
    # chfn -f NEUER_VOLLSTÄNDIGER_NAME NEUERNAME
  • Dann kann man den Heimat-Ordner umbennen:
    # mv -v /home/ALTERNAME /home/NEUERNAME
  • Mittels
    # usermod -d /home/NEUERNAME -m NEUERNAME
    ordnet man das Heimat-Verzeichnis dem neuen Benutzer zu.
  • Und zuletzt sollte man noch die Standardgruppe umbenennen. Dazu öffnet man die Datei /etc/group und ändern den Gruppennamen der zugehörigen Benutzer-ID.
# usermod -L chris
sperrt den Benutzer chris
# usermod -s /bin/fish diana
setzt die Shell für den Benutzer diana auf /bin/fish


Informationen über Benutzer und Gruppen

Mit Hilfe des Befehls id kann man seine eigene Benutzernummer und die Gruppenzugehörigkeit herausfinden oder die von Anderen:
# id
uid=1000(udo) gid=1000(udo) Gruppen=1000(udo), 500(design), ....
# id sonja
uid=1001(sonja) gid=1001(sonja) Gruppen=1001(sonja),1000(udo)....
Mit Hilfe des Befehls groups werden sämtliche Gruppen eines users angezeigt.
# groups
root
# groups udo
udo dialout cdrom floppy audio video plugdev powerdev scanner netdev


Gruppenverwaltung

Jeder User wird einer primären Gruppe zugeordnet.
Die Gruppenzugehörigkeit jedes Users findet sich in der Datei /etc/group, welche folgendes Format hat:
(Gruppenname):(Kennwort):(GID):(Mitglieder)
Analog zu den Befehlen useradd, usermod und userdel existieren die Befehle groupadd, groupmod und groupdel.
Mittels groupadd werden neue Gruppen erzeugt, z.B.
# groupadd training
Zum hinzufügen eines Benutzers zu einer Gruppe kann man die Datei /etc/group editieren und einfach hinter der entsprechenden Gruppe die User durch Kommata getrennt einfügen oder man verwendet die Befehle adduser oder usermod:
# adduser Benutzer Gruppe
Ohne Angabe von Optionen fügt adduser einen existierenden Benutzer einer existierenden Gruppe hinzu.
# usermod -G gruppe -a Benutzer
die option -a (add=hinzufügen) ist hier sehr wichtig, da ohne die Option der Benutzer zwar der angegebenen Gruppe hinzugefügt wird, aber aus allen anderen Gruppen gelöscht wird!


Unterschied adduser - useradd

Zieht man die manpage zu rate, stellt man fest, daß der Befehl useradd ein grundlegender Befehl zur Benutzerverwaltung ist, der auf jedem Linux System funktioniert, während adduser ein Frontend für useradd darstellt, um einen Benutzer auch ohne weitere Kommandozeilen-Angaben vollständig anzulegen. Dabei wird bei der Erstellung des Benutzers eine Reihe von Fragen abgearbeitet. Das ist weder schlechter noch besser, man hat schlicht und ergreifend die Wahl, ob man mit Hilfe von useradd und vielen Optionen den User anlegt, oder mittels useradd eine Reihe von Fragen abarbeitet und so den neuen Benutzer im System erstellt. Wie man wieder mal sieht, gibt es unter Linux viele Wege, die zum Ziel führen.