silvesterlangen.de

Seite
Menü

User-/Gruppenverwaltung

Benutzerkonten müssen in Linux angelegt, manipuliert und gelöscht werden. Fangen wir ganz simpel damit an einen User anzulegen, ihn dann zu verändern, dann zu sperren, dann wieder freizugeben und letztendlich wieder zu löschen.

Userdaten wie UserID, Home-Verzeichnis etc müssen irgendwo im System hinterlegt sein. Benutzername und Passwörter befanden früher mal in der /etc/passwd, was zu Sicherheitsproblemen führte. Man entschied sich das zu ändern und lagerte die verschlüsselten Passwörter in /etc/shadow aus. Diese Datei ist nur noch von Root lesbar.

Die Datei /etc/passwd genauer betrachtet:

User:x:1000:1000:username,,,:/home/username:/bin/bash

Wie man sieht sind die einzelnen Elemente mit Doppelpunkten getrennt. Im Detail schaut das wie folgt aus:

  •  User - Benutzername (Anmeldename) im System
  • x - Ursprünglich stand dort das Passwort
  • 1000 - User-ID. Benutzer werden im System mit IDs identifiziert. Benutzernamen sind nur für den Menschen gedacht, weil sie leichter zu merken sind.
  • 1000 - Group-ID. Die Gruppe ist ebenfalls eine ID. Name aus dem gleichen Grund.
  • username - Der vollständige Benutzername als Information (nicht systemrelevant). Danach durch Kommata getrennt weiter Informationen wie Telefonnummer, Personalnummer oder sonstiges.
  • /home/username - Das Home-Verzeichnis wo der User seine Daten liegen hat.
  • /bin/bash - definiert die Shell, die dem User zur Verfügung gestellt wird.

Genau so wie es mit der passwd ist, ist auch die Datei /etc/group gestaltet. Hier ein Auszug und im Detail wie oben erklärt:

gruppenname:x:1000:

  • gruppenname - Der Name (systemirrelevant) der Gruppe, die der User zugeordnet ist.
  • x - Hier stand früher das Gruppenpasswort.
  • 1000 - Die Gruppen-ID (systemrelevant).

 

Benutzer anlegen:

Für das Anlegen eines Benutzers benötigt man ein einfaches Useradd. Hier hat man schon die Möglichkeit verschiedene Optionen anzugeben. Beispielsweise kann man dem System anweisen das Homeverzeichnis des Users gleich anzulegen oder/und  die Shell festzulegen. Es lassen sich auch gleich User- bzw. Gruppen-ID festlegen und vieles mehr.

useradd -m hannes

Hier wird einfach der User "hannes" angelegt. Die Option -m sorgt dafür, dass gleich das Home-Verzeichnis mit angelegt wird. Im Standart ist das /home/. Möchte man das Home-Verzeichnis dieses Users woanders haben, so ist die Option -b oder -d zu nutzen.

useradd -c "Hannes Hahn" -b /samba/ -s /bin/false -uid 1017 -gid 1017 -p hannes

Ich lege hier fest, dass der User "hannes" heißt und in den Comments seinen vollständigen Namen stehen hat. Weiter sage ich, dass das User-Homedir nicht in /home/ sondern in /sambahomes/ angelegt werden soll. Der User bekommt keine Login-Shell zur lokalen Anmeldung und bekommt die User-ID 10117 sowie der Gruppe zugewiesen, die die ID 10117 hat. Zum Schluss sorgt die Option -p dafür, dass direkt nach einem Passwort für den User gefragt wird.

 

Benutzer manipulieren:

Darunter ist zu verstehen, dass beispielsweise das Passwort, Home-Directory oder die GID des Users geändert wird.

 

Passwort ändern:

passwd hannes

Man wird nun aufgefordert zwei mal das neue Passwort einzugeben.

 

GID ändern:

usermod -g sambausers hannes

Die Stammgruppe des Benutzers wird auf sambausers geändert.

 

GID hinzufügen:

usermod -aG sambausers hannes

Der Benutzer Hannes wird der Gruppe sambausers zusätzlich hinzugefügt. Er ist also nicht nur Mitglied der Gruppe mit der ID 10117, sondern auch der Gruppe sambausers.

 

Benutzer löschen:

userdel hannes

Der Benutzer hannes wird gelöscht. Allerdings nur aus der /etc/passwd sowie /etc/shadow. Das Problem ist dabei, dass das User-Home und seine Mails erhalten bleiben. Ist das nicht gewünscht, so muss die Option -r hinzugefügt werden.

userdel -r hannes

Nun wird auch das User-Home und Mails gelöscht. Es könnte aber sein, dass der User noch eingelogt ist, was das Löschen erschwert.

userdel -r -f hannes

 Die Option -f (force) sorgt dafür, dass ein noch eingelogter User gelöscht werden kann.

 

Benutzer sperren/entsperren:

Damit ein Benutzer vorrübergehend gesperrt wird bzw. nachher wieder entsperrt wird, kann der Befehl usermod benutzt werden. Folgender Befehl sperrt den Benutzer "hannes". Der dann nachfolgende Befehl entsperrt "hannes" wieder.

usermod -L hannes

usermod -U hannes

Was genau passiert? In der Datei /etc/shadow ist für jeden Benutzer eine Zeile angelegt. Vor dem Hash-Wert des Passwortes wird dann einfach ein Ausrufezeichen gesetzt, was dem System sagt, dass dieser Benutzer gesperrt ist. Ein erneuter Login ist nicht möglich, jedoch bleibt die gerade bestehende Sitzung bestehen. Der Benutzer wird nicht getrennt.

Gesperrter User: hannes:!$6$I1L......MLS.85wrsmNw.1ZsrtR.ta.r0:17706:0:99999:7:::

Entsperrter User: hannes:$6$I1L......MLS.85wrsmNw.1ZsrtR.ta.r0:17706:0:99999:7:::

 

Die Datei /etc/shadow

Wie oben bereits angedeutet speichert Linux hier das Benutzerpasswort. Aber nicht nur das. In dieser Datei befinden sich auch Informationen darüber wie alt ein Passwort bereits ist und wann es geändert werden muss und einiges mehr. Hier die Aufschlüsselung:

hannes:!$6$I1L3....rsmNw.1ZsrtR.ta.r0:17706:0:1000:7:4:1:

Ich habe es farblich abgesetzt, um die Felder besser zu beschreiben.

  1. Der Benutzername, Case-sensitive, passend zum Usereintrag in /etc/passwd
  2. Der Hash-Wert des Benutzerpassworts (! besagt Deaktivierung)
  3. Die Anzahl Tage nach 1970 seit das Passwort geändert wurde
  4. Restliche Tage bevor das Passwort wieder geändert werden muss
  5. Anzahl Tage alle wie viel Tage ein Passwort geändert werden muss
  6. Angabe in Tagen wie lange vorher ein User auf den anstehenden Passwordchange hingewiesen wird
  7. Anzahl Tage wie lange ein Benutzerkonto bereits gesperrt ist durch abgelaufenes Passwort.
  8. Angabe in Tagen wie lange ein Benutzerkonto geperrt ist durch Administrator.

Zu Demonstrationszwecken habe ich natürlich alle Felder gefüllt, dass sie einen Wert enthalten anhand dessen ich zeigen kann was sie bedeuten. Im Standart schaut so eine Zeile aber so aus wie in den Beispielen "gesperrter/entsperrter User".

 

Apropos Standart

Dieser lässt sich natürlich ändern. In der Datei /etc/login.defs sind die nötigen Parameter in der Sektion "Password aging controls", die sich je nach Bedarf anpassen lassen. Die interessanten Parameter sind die folgenden:

PASS_MAX_DAYS   99999 (Wie viele Tage ein Passwort gültig ist)
PASS_MIN_DAYS   0     (Alle wie viele Tage darf ein Passwort geändert werden darf)
PASS_MIN_LEN    12         (Wie lang ein Passwort mindestens sein muss)
PASS_WARN_AGE   7     (Anzahl restlicher Tage bevor das Passwort abläuft)

Änderungen in der Datei /etc/login.defs haben natürlich keine Auswirkung auf bereits bestehende Benutzerkonten. Dazu muss die /etc/shadow vom System neu geschrieben werden. Man kann das natürlich händisch machen, aber bei mehreren hundert Benutzerkonten ist das weniger schön. Der einfachste Weg ist ein pwunconv auszuführen und danach direkt wieder ein pwconv, was dafür sorgt, dass die Datei /etc/shadow neu geschrieben wird - und zwar mit den Änderungen, die in der /etc/login.defs vorgenommen wurden.

Was genau passiert ist folgendes: Die Passwörter werden mit dem Befehl pwunconv wie früher in der /etc/passwd zurückgespeichert. Der Befehl pwconv hingegen generiert die Datei /etc/shadow neu und löscht die Passwörter aus der /etc/passwd wieder raus.

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login