Benutzer-Verwaltung unter Linux

Grundlagen der Benutzer-Verwaltung

In diesem Beitrag der Linux Bibel werden wir mehr über die Benutzer-Verwaltung unter Linux lesen, wie erstellt man solche, entfernt solche, wichtige Dateien, Gruppen, ...

Grundlagen

Unter Linux hat jeder Nutzer sein eigenes Home-Verzeichnis unter dem System-Verzeichnis "/home/", hier liegen diese Verzeichnisse der einzelnen Nutzer beschrieben durch deren Login-Namen - wie etwa hier das meinige Home-Verzeichnis:

Das Home-Verzeichnis unter Linux - Verzeichnisse der einzelnen Nutzer

Das Home-Verzeichnis unter Linux - Verzeichnisse der einzelnen Nutzer

Auf diesem System gibt es nur einen Nutzer also auch nur ein Home-Verzeichnis. Meldet sich der Nutzer an landet er so gesehen in diesem, seinen eigenen Verzeichnisse, hier liegen die Dateien die er erstellt, speichert, aus dem Internet herunter lädt, ... Nur in diesem Verzeichnis kann der Nutzer schalten und walten wie er möchte, hier liegen meist versteckt (versteckte Dateien und Verzeichnisse haben einen Punkt vor deren Bezeichnung) die Einstellungen der Anwendungen die diese nutzt:

Das Home-Verzeichnis unter Linux - Verzeichnisse der einzelnen Nutzer - Versteckte Dateien und Verzeichnisse

Das Home-Verzeichnis unter Linux - Verzeichnisse der einzelnen Nutzer - Versteckte Dateien und Verzeichnisse

Die Datei /etc/passwd

In der System-Datei "/etc/passwd" finden Sie die Angaben zu den einzelnen bestehenden Accounts, neben den realen Nutzern (also erstellten Accounts) finden sich hier auch System- oder Pseudo-Accounts, solche werden vom System angelegt damit diverse Prozesse Rechte an ihren zugehörigen Dateien haben:

Die Datei /etc/passwd unter Linux

Die Datei /etc/passwd unter Linux

Ein Beispiel als kurzer Auszug:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
robertg:x:1000:1004:Robert Gödl:/home/robertg:/bin/bash

In jeder Zeile wird ein Nutzer (oder eben auch System-Account) beschrieben, die einzelnen Einträge in jeder Zeile werden durch einen Doppelpunkt getrennt. Zu Beginn sehen wir den Namen - den Login-Namen des Nutzers, als kleines Beispiel "robertg", als nächster Eintrag folgt die Abfrage des Passwortes - steht hier ein "x" wird beim Login das Passwort des Nutzers abgefragt, steht hier gar nichts - also "::" ist eine Anmeldung ohne Passwort möglich, findet sich hier ein Sternchen "*" ist dem Nutzer die Anmeldung überhaupt nicht möglich. Nun folgt die UID - User ID, jeder Nutzer - egal ob System-Account oder realer Nutzer hat eine solche mit der er eindeutig identifizierbar ist, für System-Accounts sind die Nummern 1 bis 999 reserviert, der bei der Installation angelegte reale Nutzer die 1000, weitere danach angelegte Nutzer die folgenden 1001, 1002, 1003 und so weiter und so fort, der Nutzer root hat wiederum die 0. Danach kommt die GID - die Gruppen-ID, jeder Nutzer hat eine solche, dazu werden wir später mehr erfahren. Nun folgen Infos wie etwa der vollständige Name des Nutzers zu denen auch Zimmer-Nummer, Telefonnummer, etc zählen können. Weiter folgt das Home-Verzeichnis des Nutzers - bei System-Accounts sind dies die Verzeichnisse der jeweiligen Dienste. Zuletzt findet sich die genutzte Shell - also der Shell-Interpreter mit der der Nutzer angemeldet wird und standardmäßig nutzt.

Die Datei /etc/shadow

Debian nutzt so genannte Shadow-Passwörter, diese liegen wiederum in der Datei "/etc/shadow". Die Datei kann nur vom Administrator eingesehen werden - auch hier sind diese jedoch nicht lesbar sondern verschlüsselt hinterlegt. Auch hier liegen nicht nur die Passwörter aller Nutzer sondern weitere Informationen, ein kleines Beispiel für einen Auszug dieser Datei (und natürlich nicht real):

root:$6$FazuMQYmnZz$F.cZvmX2y9V1F.WH2nBmp3la71Nq4xT/4IDhi.:18130:0:99999:7:::
daemon:*:12334:0:99999:7:::
bin:*:12334:0:99999:7:::
sys:*:12334:0:99999:7:::
robertg:$8$ZwVdwphAdTg9$pMUH6XG8Hui8AEae9qf/.yY9bbByqPS.Zt/:18130:0:99999:7:::

Auch hier findet sich wieder für jeden Nutzer ein Eintrag, die einzelnen Einträge sind wieder durch einen Doppelpunkt getrennt. Als erstes folgt der Nutzername und anschließend wie schon beschrieben das verschlüsselte Passwort, möchte man einen Nutzer zeitweilig sperren setzt man ganz einfach ein Rufzeichen vor das jeweilige Passwort, also etwa:

robertg:!$8$ZwVdwphAdTg9$pMUH6XG8Hui8AEae9qf/.yY9bbByqPS.Zt/:18130:0:99999:7:::

Weiter geht es mit dem Alter des Passwortes, hier werden die Tage vom ersten Januar 1970 gezählt (Start von UNIX). Es folgt das Mindestalter des Passwortes - die Zeit in Tagen solange das Passwort vom Nutzer geändert werden darf. Anschließend kommt das maximale Alter des Passwortes in Tagen bis das Passwort geändert werden darf sowie die Warnung in Tagen an denen er gewarnt wird bevor sein Passwort ausläuft, er dieses also ändern muss, läuft dieses aus wird dieser automatisch vom System gesperrt und kann sich nicht mehr einloggen. Der Puffer zeigt nun in Tagen an bis der Account tatsächlich nicht mehr ohne Änderung des Passwortes nutzbar ist. Die Gültigkeit wiederum zeigt die Tage vom ersten Januar 1970 gezählt bis das Passwort ungültig wird. Die letzten beiden Felder sind aktuell nicht genutzt.

Die Datei /etc/group

Wie wir schon gelesen haben ist jeder Nutzer auch eine eigene Gruppe die in der Datei "/etc/passwd" durch eine Zahl beschrieben wird, jeder Nutzer ist meist Mitglied mehrerer Gruppen. Gruppen dienen dazu Rechte an Nutzer weiter zu geben, ist beispielsweise ein Nutzer nicht Mitglied der Gruppe "cdrom" kann dieser keine CD's/DVD's einhängen und öffnen. In der Datei "/etc/group" werden diese Gruppen nun geregelt, hier ein kleiner Auszug als Beispiel:

root:x:0:
daemon:x:1:
bin:x:2:
users:x:100:robertg
robertg:x:1004:

Der Aufbau der Datei ist der selbe wie bei den bisherigen Dateien, zu Beginn sehen Sie den Namen der jeweiligen Gruppe, anschließend folgt die mögliche Abfrage des Passwortes, findet sich hier ein "x" wird das Passwort der Gruppe abgefragt, ist der Eintrag leer ist der Login ohne Passwort möglich, mit einem Sternchen "*" ist kein Login möglich. Die GID - Gruppen-ID ist die eindeutige Gruppen-Nummer und zuletzt finden sich die einzelnen Mitglieder der jeweiligen Gruppe die durch einen Beistrich "," ohne Leerzeichen getrennt werden.

Die Datei /etc/gshadow

In der Datei "/etc/gshadow" werden nun wiederum die Passwörter der einzelnen Gruppen geregelt, die Datei ist nur dem Administrator zugänglich, auch hier sind die Passwörter nur verschlüsselt hinterlegt - wenn eines vom Administrator angelegt wurde. Der Aufbau ist der selbe wie bei den bisherigen Dateien, ein kleines Beispiel:

root:*::
daemon:*::
bin:*::
sys:*::
robertg:!::

Zu Beginn sehen Sie den Gruppen-Namen, nun folgt wenn vorhanden das verschlüsselte Passwort - findet sich hier nur ein "*" oder ein "!" wurde ein solches nicht gesetzt. Falls vorhanden folgt nun der Verwalter der Gruppe - dieser kann weitere Mitglieder in diese aufnehmen ohne Administrator des Systems zu sein und die Mitglieder der jeweiligen Gruppe die durch einen Beistrich "," ohne Leerzeichen getrennt werden.

Das Verzeichnis /etc/skel

Legt man auf dem Terminal neue reale Nutzer-Accounts an kann der Administrator fest legen welche Dateien automatisch in dessen Home-Verzeichnis angelegt werden. Dies erfolgt über das bestehende Verzeichnis "/etc/skel", es handelt sich hier so gesehen um eine Vorlage für das Home-Verzeichnis, legt man hier beispielsweise das Verzeichnis "Firma" an wird dieses automatisch auch in einem neu angelegten Account in dessen Home-Verzeichnis angelegt, dies gilt ebenso für Dateien - so kann der Administrator beispielsweise eine angepasste ".bashrc" vorlegen, oder eine PDF-Datei mit einer Beschreibung / Hilfe für das System, was auch immer hier hinterlegt wird wird auch in einem neuen Account integriert.

Nutzer anlegen, bearbeiten und entfernen

Neben den Einstellungen auf der grafischen Oberfläche der jeweiligen Desktop-Umgebung lassen sich Nutzer natürlich auch auf dem Terminal anlegen, ich denke die grafischen Methoden muss man nicht lange beschreiben und besprechen - diese sind selbst erklärend, wir wollen dies hier auf dem Terminal tun wozu natürlich jeweils Administrator-Rechte nötig sind.

Wir werden nun zunächst mit der manuellen Variante beginnen, dies bedeutet hier hat der Administrator jedes mögliche Einstellung in der Hand, er kann diverse Einstellungen auslassen, ...

useradd - Accounts manuell erstellen

Der Befehl "useradd" lässt dem Administrator jede mögliche Einstellung wie beliebt vorzunehmen, sollte daher auch nur von versierten Nutzern genutzt werden. Die Syntax des Befehls lautet:

useradd Optionen Nutzername

Der Befehl nutzt gewisse Standard-Werte die man sich mit der Option "-D" anzeigen lassen kann:

useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Weitere nützliche Optionen wären:

useradd

Als Beispiel möchte ich den Nutzer "katarina" mit der UID "1005", der GID "1005", dem Home-Verzeichnis "katarina", der Shell "bash" und den Informationen "Katarina Irgendwas Tel: 06641688124" anlegen:

useradd -u 1005 -g 1005 -d /home/katarina -m -s /bin/bash -c "Katarina Irgendwas Tel: 06641688124" katarina

Zu beachten gilt nun das mit dem Befehl "useradd" angelegte Accounts nicht aktiv sind, es gilt also ein Passwort für den Nutzer zu setzen:

passwd katarina

usermod - Accounts manuell bearbeiten

Der häufigste Einsatz vom Befehl "useradd" wird wohl das modifizieren der Gruppen-Zugehörigkeit sein, als Beispiel möchte ich den Nutzer "katarina" den Gruppen "cdrom kvm" hinzufügen damit dieser auf CD's und DVD's (sowie natürlich auch Blue Ray's) zugreifen kann und virtuelle Maschinen via KVM nutzen kann:

usermod -G -a cdrom,kvm katarina

Wichtig ist es die Option "-a" zu nutzen damit der Nutzer nicht aus anderen Gruppen zu denen er gehört gelöscht wird, möchte man den Nutzer aus allen Gruppen bis auf etwa "dialout" löschen:

usermod -G dialout katarina

Welchen Gruppen gehört ein Nutzer an?

Da wir gerade dabei waren die Gruppen zu modifizieren wollen wir uns anzeigen zu welchen Gruppen wir selbst gehören:

groups
robertg lp dialout cdrom floppy audio dip video plugdev users systemd-journal kvm lpadmin bluetooth netdev scanner fuse powerdev storage vboxusers

Will man sehen zu welchen Gruppen ein anderer Nutzer gehört gibt man einfach dessen Namen an:

groups katarina

userdel - Accounts manuell löschen

Um manuell Nutzer zu löschen nutzt man den Befehl "userdel", zum Beispiel möchte ich den Nutzer "peter" löschen (Achtung - es erfolgt keine Abfrage zur Sicherheit ob man den Nutzer tatsächlich löschen möchte, es passiert einfach):

userdel -r peter

Nutzt man die Option "-r" nicht wird der Nutzer nur aus der Datei "/etc/passwd" und "/etc/group" heraus gelöscht, das Home-Verzeichnis jedoch bleibt erhalten.

groupadd - Gruppen manuell erstellen

Als kleines Beispiel möchte ich ganz einfach die Gruppe "audio" erstellen - sie ist zwar schon vorhanden aber um zu zeigen was mit Gruppen möglich wäre ist diese genau richtig, ist nun beispielsweise "peter katarina" und "robert" Mitglied der Gruppe "audio"und "hannes" nicht, "robert" hat wiederum ein Verzeichnis namens "Musik" und vergibt dieses per Zugriffsrechte an die Gruppe "audio" kann jeder außer "hannes" auf dieses Verzeichnis zugreifen.

groupadd -g 1006 audio

Mit der Option "-g" gibt man wie man sieht die GID an.

groupdel - Gruppen manuell löschen

Mit dem Befehl "groupdel" lassen sich nun bestehende Gruppen wieder löschen, als Beispiel für die zuvor genannte Gruppe "audio":

groupdel audio

adduser - Accounts, Gruppen interaktiv erstellen und anpassen

Die bisher genutzten Befehle erfordern es erstens die nötigen Optionen zu setzen und natürlich zu kennen, vor allem aber auch nichts wichtiges zu vergessen, beim erstellen eines Accounts das Passwort extra zu setzen. Mit den folgenden Befehlen geschieht dies einfach und interaktiv, man gibt den Nutzer an und die Software fragt die weiteren Parameter ab. Als Beispiel möchte ich nun den Nutzer "katarina" anlegen:

adduser katarina
Lege Benutzer >>katarina<< an ...
Lege neue Gruppe >>katarina<< (1005) an ...
Lege neuen Benutzer >>katarina<< (1005) mit Gruppe >>katarina<< an ...
Erstelle Home-Verzeichnis >>/home/katarina<< ...
Kopiere Dateien aus >>/etc/skel<< ...
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert
Benutzerinformationen für katarina werden geändert.
Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert
          Vollständiger Name []: Katarina Irgendwas
          Raumnummer []: 10
          Telefon geschäftlich []: 06641234567
          Telefon privat []: 06641234567
          Sonstiges []: Dies und das
Sind die Informationen korrekt? [J/n] j

Mit "adduser" lassen sich auch Gruppen anlegen, etwa für die Gruppe "audio":

adduser --group audio
Gege Gruppe >>audio<< (GID 1006) an ...
Fertig

Auch lassen sich mit diesem Befehl Nutzer zu bestehenden Gruppen hinzufügen:

adduser katarina audio,cdrom
Füge Benutzer >>katarina<< der Gruppe >>audio<< hinzu ...
Füge Benutzer >>katarina<< der Gruppe >>cdrom<< hinzu ...
Benutzer >>katarina<< wird zur Gruppe >>audio<< hinzugefügt.
Benutzer >>katarina<< wird zur Gruppe >>cdrom<< hinzugefügt.
Fertig.

deluser - Accounts und Gruppen interaktiv löschen oder Nutzer aus Gruppen entfernen

Auch mit dem Befehl "deluser" läuft alles interaktiv ab, nun möchte ich den Account "katarina" löschen:

deluser
Geben Sie den Namen ein des Benutzers, der entfernt werden soll: katarina
Entferne Benutzer >>katarina<< ...
Warnung: Die Gruppe >>katarina<< hat keine Mitglieder mehr.
Fertig.

In diesem Fall wird der Nutzer gelöscht, jedoch nicht dessen Home-Verzeichnis, soll dieses auch gelöscht werden nutzt man zusätzlich die Option "--remove-home", will man ein Backup des Verzeichnisses erstellen und dieses etwa unter "/home//robert/Sicherungen" speichern:

deluser katarina --remove-home --backup --backup-to /home/robert/Sicherungen/
Suche Daten zum Sichern/Löschen ...
Die zu löschenden Daten werden nach /home/robert/Sicherungen gesichert ...
backup_name = /home/robert/Sicherungen/katarina.tar/bin/tar: Entferne führende >>/<< von Elementnamen
Daten werden gelöscht ...
Entferne Benutzer >>katarina<< ...
Warnung: Die Gruppe >>katarina<< hat keine Mitglieder mehr.
Fertig.

Um nun etwa die Gruppe "audio" zu löschen:

deluser --group audio
Entferne Gruppe >>audio<< ...
Fertig.

Oder um den Nutzer "katarina" aus den Gruppen "audio cdrom" zu entfernen:

deluser katarina audio,cdrom
Entferne Benutzer >>katarina<< aus der Gruppe >>audio<< ...
Entferne Benutzer >>katarina<< aus der Gruppe >>cdrom<< ...
Fertig.

Nutzer-Passwörter und Gruppen-Passwörter anlegen und ändern

Um Passwörter angelegter Nutzer zu erstellen genügt der Befehl vom Administrator - etwa für den Nutzer "katarina":

passwd katarina
Ändern des Passworts für katarina.
Geben Sie ein neues UNIX-Passwort ein: Das_Passwort
Geben Sie das neue UNIX-Passwort erneut ein: Das_Passwort
passwd: Passwort erfolgreich geändert

Um das Passwort eines bestehenden Nutzers als Administrator zu ändern gehen Sie wie oben beschrieben vor, dessen Passwort muss man als Administrator natürlich nicht kennen. Wollen Sie selbst Ihr eigenes Passwort wechseln, oder natürlich auch das root-Passwort genügt:

passwd
Ändern des Passworts für robert.
(aktuelles) UNIX-Passwort: Passwort
Geben Sie ein neues UNIX-Passwort ein: Das_Passwort
Geben Sie das neue UNIX-Passwort erneut ein: Das_Passwort
passwd: Passwort erfolgreich geändert

Möchte man nun einer Gruppe ein Passwort geben, eben wie oben beschrieben mit der Gruppe "audio" mit der man auf die jeweiligen Musik-Verzeichnisse der anderen Nutzer zugreifen könnte:

gpasswd audio
Passwort für die Gruppe >>audio<< wird geändert.
Neues Passwort: Das_Passwort
Passwort wiederholen: Das_Passwort

Ein Grund könnte etwa sein weil man den Rechner kurz verlässt und jemand anderes dran kommt der eben nicht an das Verzeichnis der Gruppe heran kommen soll - er müsste für den Zugriff das jeweilige Passwort angeben.

Auch kann der Administrator die Leitung einer Gruppe an einen anderen Nutzer weiter geben damit dieser etwa weitere Nutzer in die Gruppe aufnehmen kann auch wenn der System-Administrator nicht anwesend ist, nun will ich etwa dem Nutzer "katarina" die Leitung der Gruppe "audio" übergeben:

gpasswd -A katarina audio