# 1.111.1

# Verwalten von Benutzer- und Gruppenkonten und verwandten Systemdateien

Beschreibung: Prüfungskandidaten sollten in der Lage sein, Benutzerkonten hinzuzufügen, zu löschen, zu deaktivieren und zu ändern. Enthaltene Tätigkeiten beinhalten das Hinzufügen und Löschen von Gruppen und das Ändern der Benutzer- und Gruppeninformation in den passwd/group Datenbanken. Ebenfalls enthalten ist das Erstellen von speziellen und eingeschränkten Konten.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

- chage
- gpasswd
- groupadd
- groupdel
- groupmod
- grpconv
- grpunconv
- passwd
- pwconv
- pwunconv
- useradd
- userdel
- usermod
- `/etc/passwd`
- `/etc/shadow`
- `/etc/group`
- `/etc/gshadow`

Um mit einem Linux-Rechner arbeiten zu können, muß man eine gültige Userkennung auf diesem Rechner besitzen. Ein wichtiger Teil der administrativen Aufgaben eines Systemverwalters bezieht sich auf die Verwaltung dieser User-Accounts. Dieser Abschnitt behandelt die dazu notwendigen Fähigkeiten.

Ein User auf einem Linux-Rechner wird intern über seine UserID (UID), eine Nummer von 0 bis 65535, verwaltet. Der User mit der Nummer 0 ist der Systemverwalter. Nicht der Name root sondern die UserID 0 machen ihn zum Superuser. Alle anderen User sind sogenannte Normaluser, deren Rechte zwar stark unterschiedlich sein können, wobei der Unterschied aber nicht über die UserID definiert ist.

Jeder User gehört mindestens einer Gruppe zu, kann aber Mitglied beliebig vieler Gruppen sein. Eine dieser Gruppen ist die Login-Gruppe (manchmal auch primäre Gruppe genannt) des Users, die Gruppe, der später die Dateien gehören werden, die der User anlegt.

Die Dateien, in denen die Informationen über User und Gruppen abgelegt werden und die Befehle, die wir zum Anlegen und Bearbeiten dieser Userinformationen brauchen werden im Folgenden dargestellt.

### Die Datei /etc/passwd

Die Datei `/etc/passwd` enthält alle Usereinstellungen, bis auf das verschlüsselte Passwort. In älteren Versionen ist auch das Passwort hier abgelegt, aus Sicherheitsgründen wurde es aber in den neueren Versionen in die Datei `/etc/shadow` ausgelagert.

Die Datei `/etc/passwd` muss für alle User lesbar sein, denn sie ist der einzige Ort, an dem die Verbindung zwischen UserID und Usernamen hergestellt werden kann.

      -rw-r--r--   ...    /etc/passwd

Das wird praktisch bei jedem Aufruf von Programmen benötigt, die auch nur irgendetwas mit Usernamen zu tun haben, sogar ein `ls -l` braucht also diesen Zugriff. Wenn das verschlüsselte Passwort hier abgelegt wäre, so könnte ein Angreifer die Datei lesen, das Passwort nehmen und über eine brute force attack (Ausprobieren aller denkbaren Möglichkeiten) das Passwort entschlüsseln. Das war der Grund für die Auslagerung.

Die Datei `/etc/passwd` ist eine Textdatei, die für jeden User eine Zeile angelegt hat. Diese Zeile enthält verschiedene Felder, die durch einen Doppelpunkt voneinander getrennt sind. Das Format ist:

      Username:x:UserID:GruppenID:Beschreibung:Homeverzeichnis:Startshell

Dabei bedeuten die einzelnen Felder:

Username
  Der Name des Users. Alphanumerische Zeichen.

x
  Hier stand früher das verschlüsselte Passwort. Das x bedeutet, daß die Passwort-Information jetzt in /etc/shadow ausgelagert wurde.

UserID
  Die numerische UserID (UID). Eine einheitliche Nummer von 0 bis 65534. Wenn mehrere User die selbe ID benutzen, dann sind sie aus der Sich des Systems die selben User. Die UID 0 ist für den Systemverwalter reserviert.

GruppenID
  Die numerische GruppenID (GID) der Login-Gruppe des Users. Der User kann noch Mitglied anderer Gruppen sein, diese Gruppe ist aber seine initiale Gruppe, d.h. alle Dateien, die der User anlegt werden normalerweise die Gruppenzugehörigkeit zu dieser Gruppe haben. (Ausnahme: Dateien, die in Verzeichnissen angelegt werden, die eine andere Gruppenzugehörigkeit haben und das SGID-Bit gesetzt haben)

Beschreibung
  Hier kann eine kurze Beschreibung des Users stehen. Das Format ist technisch gesehen frei wählbar. Inzwischen hat sich ein Standard durchgesetzt, der die folgenden Informationen hier ablegt:
  - Ausgeschriebener Name des Users (Vor- und Zuname)
  - Büro-Raumnummer
  - Telephonnummer Büro
  - Telephonnummer Privat
  - Sonstiges
  Diese Informationen werden mit Kommata voneinander getrennt. Programme wie `finger` greifen auf diese Information zu. Dieses Feld kann aber auch leergelassen werden oder einfach nur eine Kurzbeschreibung beinhalten.

Homeverzeichnis
  Das Verzeichnis des Users. Beim Login wird automatisch in dieses Verzeichnis gewechselt.

Startshell
  Die Shell, die beim Login gestartet werden soll. Hier wird bei normalen Usern meist die /bin/bash oder /usr/bin/csh stehen. Ein Sonderfall sind Useraccounts, die nötig sind um bestimmte Dienste anzubieten (z.B. Samba, pop3, ...). Solche User sollen evt. keine Möglichkeit haben, sich regulär einzuloggen. In einem solchen Fall wird hier zweckmäßigerweise /bin/false eingetragen. Das ist ein Programm, das nichts tut, als einen Rückgabewert von 1 zu produzieren. Wenn ein User diesen Eintrag hat, kann er sich nicht einloggen, bzw. er kann schon, fliegt aber sofort wieder raus, weil seine "Shell" sich sofort wieder verabschiedet.

Eine typische Zeile aus /etc/passwd könnte also folgendermaßen aussehen:

      root:x:0:0:Hans Maier,1,089/12345,089/54321,Systemverwalter:/root:/bin/bash

Oft wird das Beschreibungsfeld gar nicht ausgefüllt oder nur mit einem kurzen Namen versehen, dann wird es noch einfacher:

      root:x:0:0::/root:/bin/bash

Wenn ein Feld also leergelassen wird, folgen die Doppelpunkte direkt aufeinander.

### Die Datei /etc/shadow

Nachdem das verschlüsselte Passwort jetzt nicht mehr in der Datei /etc/passwd abgelegt wird, ist dazu eine andere Datei notwendig. Diese Datei heißt /etc/shadow und birgt neben dem Passwort noch einige Einstellmöglichkeiten, die sich alle um das Passwort drehen. Wie schon in /etc/passwd handelt es sich um eine reine Textdatei, die für jeden User eine Zeile veranschlagt. Wieder ist jede Zeile in Felder aufgeteilt, die durch Doppelpunkte getrennt werden.

Die Datei /etc/passwd ist nicht lesbar für alle sondern meist nur durch den Systemverwalter. Manche Distributionen legen eine Gruppe `shadow` an, deren Mitglieder noch ein Leserecht auf diese Datei haben, das ist aber nicht zwingend erforderlich. Ein Zugriffsrecht von

    -rw-------    ...   /etc/shadow

ist völlig ausreichend.

Die interne Struktur jeder Zeile ist folgende:

      Username:Passwort:Alter:min_Alter:max_Alter:Warnzeit:Pufferzeit:Ungültigkeit:Reserviert

Die Bedeutungen der einzelnen Felder sind:

Username
  Der Username, genau so wie in /etc/passwd. Das ist sozusagen das Schlüsselfeld des Datensatzes, mit dem die Verbindung zu den Zeilen aus /etc/passwd hergestellt wird.

Passwort
  Hier steht das verschlüsselte Passwort. Linux verschlüsselt seine Passwörter mit einem nicht-reversiblen Verschlüsselungsmechanismus durch den Systemaufruf `crypt`. Das Ergebnis ist immer eine 13-24-stellige Zeichenkette, egal wie lange das eingegebene Passwort war. Wenn hier also eine Zeichenkette steht, die nicht 13-24-stellig ist, so existiert kein Passwort, das durch Aufruf von crypt in diese Zeichenkette verschlüsselt werden würde. Damit ist der Eingang faktisch gesperrt. Häufig steht hier z.B. ein einzelnes Sternchen (*) oder ein Ausrufungszeichen (!). Das heißt, daß dieser Eingang verschlossen ist, es existiert kein gültiges Passwort. Der Systemverwalter kann sich aber mit dem Befehl su in diesen Benutzer verwandeln und unter seiner Effektiven UID arbeiten. Steht in diesem Feld nichts, folgt also ein Doppelpunkt dem nächsten, so gibt es kein Passwort, der Eingang ist frei, der User kann sich ohne Nennung eines Passworts einloggen.

Alter
  Hier stehen die Anzahl der Tage seit dem 1. Januar 1970 bis zu dem Tag, an dem das Passwort das letzte Mal verändert wurde. Keine Angst, das müssen Sie nicht selbst ausrechnen, das Programm passwd tut das für Sie und trägt diese Zahl hier ein.

min_Alter
  Das Mindestalter eines Passworts, bevor es geändert werden darf. Also genau genommen, die Anzahl der Tage, die seit dem letzten Passwort-Wechsel vergehen müssen, damit es erneut verändert werden darf. Das hat in der Praxis eigentlich nur dann eine Bedeutung, wenn einem User verboten werden soll, das Passwort zu ändern (z.B. wenn mehrere User sich einen Account teilen). Wenn dieses Feld eine größere Zahl aufweist, als das nächste, dann darf der User sein Passwort nie ändern.

max_Alter
  Die maximale Anzahl von Tagen, bevor ein Passwort geändert werden muß. Viele Hochsicherheitssysteme verlangen, daß die Passwörter regelmäßig geändert werden müssen. Hier wird die Anzahl der Tage eingetragen, die maximal zwischen zwei Wechseln des Passworts vergehen dürfen.

Warnzeit
  Damit ein User merkt, das das Passwort bald geändert werden muß, kann hier die Anzahl der Tage vor dem Ablauf der Gültigkeit eines Passworts angegeben werden, ab der der User beim Login auf den baldigen Ablauf hingewiesen wird.

Pufferzeit
  Weil es sein kann, daß ein User ein paar Tage nicht eingeloggt war, kann er womöglich die Warnmeldung nie gesehen haben, die ihn auf das baldige Ablaufen des Passworts hingewiesen hätte. Hier kann man die Pufferzeit in Tagen angeben, die nach dem Ablaufen des Passworts verstreichen darf, bevor der Account tatsächlich ungültig wird.

Ungültigkeit
  Dieses Feld wird nur für Accounts benötigt, die zeitlich befristet sind. Hier steht die Anzahl von Tagen seit dem 1. Januar 1970, bis zu dem Tag, an dem der Account ungültig wird. Auch dazu gibt es selbstverständlich Programme, die diesen Wert in ein Datum umrechnen.

Reserviert
  Ein reserviertes Feld für zukünftige Erweiterungen.

Ein minimaler Eintrag besteht nur aus dem Usernamen, gefolgt von 8 Doppelpunkten. Das wäre dann ein User, der sich ohne Passwort einloggen darf. Die anderen Felder sind optional und können - je nach Sicherheitsbedarf des Systems - gesetzt werden, wie gewünscht.

### Die Datei /etc/group

Diese Datei enthält die Gruppeninformationen für die Usergruppen des Systems. Sie ist - wie die anderen Dateien der Userverwaltung - wieder eine Textdatenbank mit Feldern, die durch Doppelpunkte voneinander getrennt sind. Jede Zeile beschreibt eine Gruppe.

Die Zeilen definieren die Mitglieder der Gruppen, die nicht die Login Gruppen der User sind. Die Login-Gruppen-Mitgliedschaft ist in dieser Datei also nicht verzeichnet.

Wie schon bei der Datei /etc/passwd, so gilt auch bei der Datei /etc/group, daß sie für alle Welt lesbar sein muß. Daher sind wieder die Passwörter der Gruppen in die Datei /etc/gshadow ausgelagert worden, deren Format gleich im Anschluß besprochen wird. Wie in /etc/passwd, so steht im Passwort-Feld in /etc/group heute einfach ein x.

Das Format der Zeilen in /etc/group ist:

      Gruppenname:x:GruppenID:Liste der Mitglieder

Die Bedeutung der einzelnen Zeilen ist schnell erklärt:

Gruppenname
  Der Name der Gruppe, wie er dann z.B. von ls -l ausgegeben wird.

x
  Das Feld, in dem früher das Passwort stand.

GruppenID
  Die numerische GruppenID (GID), die die Gruppe kennzeichnet. Die Datei /etc/passwd referenziert die Login-Gruppen der Usereinträge z.B. mit dieser Nummer.

Liste der Mitglieder
  Eine durch Kommata getrennte Liste von Usernamen. User, die hier aufgeführt sind, sind durch diesen Eintrag Mitglieder der jeweiligen Gruppe. Die Gruppenmitgliedschaft der Login-Gruppe eines Users muß hier nicht aufgeführt sein.

Gruppenmitgliedschaften sind oft nicht ganz richtig verstanden. Aus diesem Grund folgt hier noch eine kurze Beschreibung der Mechanismen:

Jeder User kann Mitglied beliebig vieler Gruppen sein, hat aber immer genau eine Login-Gruppenmitgliedschaft. Diese Login-Gruppenmitgliedschaft wird in /etc/passwd definiert. Jede weitere Gruppenmitgliedschaft eines Users wird in der Datei /etc/group definiert.

Die pure Mitgliedschaft in einer Gruppe gibt dem User die Rechte eines Gruppenmitglieds auf Dateien, die dieser Gruppe zugehören. Es sind keine weiteren Befehle nötig, um diese Rechte wahrzunehmen. Ein Beispiel:

Wenn der User `foo` Mitglied der Gruppen `users, bar, foobar` und `uucp` ist, dann kann er alle folgenden Dateien lesen:

    -rw-r-----   1 root     users          294 Jul 29  2000 Datei1
    -rw-r-----   1 root     bar            294 Jul 29  2000 Datei2
    -rw-rw----   1 root     foobar         294 Jul 29  2000 Datei3
    -rw-r-----   1 root     uucp           294 Jul 29  2000 Datei4

Die Datei `Datei3` dürfte er sogar beschreiben.

Um diese Rechte auszuüben, muß der User `foo` keinerlei zusätzliche Befehle wie newgrp oder ähnliches benutzen, er hat die Rechte einfach durch die bloße Gruppenmitgliedschaft.

Wenn ein User eine Datei anlegt, dann bekommt diese Datei automatisch die Gruppenzugehörigkeit zur Login-Gruppe des Users. Das kann durch Befehle wie newgrp oder sg verändert werden.

### Die Datei /etc/gshadow

Gruppenpasswörter werden nicht dazu benötigt, eine Gruppenmitgliedschaft zu beweisen. Sie dienen nur dazu, einem User, der nicht Mitglied einer bestimmten Gruppe ist, zeitweilig die Rechte eines Mitglieds zu geben. Dazu muß er das Gruppenpasswort bekommen. Das wird nur sehr selten benötigt, denn es ist ja nicht viel Aufwand, einen User zu einem Gruppenmitglied zu machen.

Auch wenn ein User selbst kein Passwort hat, aber die Gruppe, zu der er mit newgrp wechseln will eines besitzt, muß es angegeben werden.

Damit die Passwörter für Gruppen nicht einlesbar sind, werden sie wieder in einer Datei abgelegt, die nicht für alle Welt lesbar ist. Diese Datei heißt `/etc/gshadow`. Das Format dieser Datei ist wieder ähnlich wie bei den anderen besprochenen Dateien. Zeilen, die in Felder aufgeteilt sind, durch Doppelpunkte voneinander getrennt. Das genaue Format ist:

      Gruppenname:Passwort:Gruppenverwalter:Liste der Mitglieder

Die einzelnen Felder haben folgende Bedeutung:

Gruppenname
  Der ausgeschriebene Name der Gruppe, wie er in /etc/group steht

Passwort
  Das verschlüsselte Passwort der Gruppe. Steht hier eine Zeichenkette, die kein gültiges verschlüsseltes Passwort darstellt, also eine nicht 13-24 stellige Zeichenkette, dann hat die Gruppe kein gültiges Passwort. Das heißt, User, die nicht Mitglied der Gruppe sind, sich nicht mit newgrp zum Gruppenmitglied erklären können.

Gruppenverwalter
  Jede Gruppe kann einen User haben, der als Gruppenverwalter fungiert. Ein Gruppenverwalter darf

  - Andere User in die Gruppe aufnehmen oder aus der Gruppe ausschließen.
  - Das Gruppenpasswort ändern.
  - Das Gruppenpasswort löschen.

  In diesem Feld steht der Name des Gruppenverwalters der Gruppe, so wie er auch in /etc/passwd aufgeführt ist.

Liste der Mitglieder
  Eine Liste der Mitglieder der Gruppe, die sich mit newgrp zum Mitglied der Gruppe machen dürfen. Diese Liste ist nicht zwansläufig deckungsgleich mit der der gleichen Gruppe in /etc/group. Ein User, der Mitglied hier in der Liste ist, aber nicht als Mitglied der Gruppe in /etc/shadow aufgeführt ist, ist nicht automatisch Mitglied der Gruppe, kann sich aber ohne Nennung eines Passworts mit newgrp zum Mitglied der Gruppe ernennen.

Der wichtigste Grund für die Verwendung der /etc/gshadow-Datei ist wohl der, daß jede Gruppe einen eigenen Gruppenverwalter haben kann. Diese Tatsache erleichtert das Leben des Systemverwalters, weil er sich nicht um alles selbst kümmern muß.

## Programme zum Umgang mit den User-/Gruppendatenbanken

Die Arbeiten an all diesen vier Dateien (passwd, shadow, group und gshadow) können prinzipiell immer mit einem Texteditor wie dem vi vorgenommen werden, es gibt aber auch viele wichtige Programme, die einem Systemverwalter die zeitaufwendige Handarbeit ersparen und auch in Schleifen bestens dazu geeignet sind, Veränderungen für viele User (oder Gruppen) automatisch vorzunehmen. Dazu kommt, daß es Programme geben muß, mit deren Hilfe auch Normaluser ihre Einstellungen verändern können, etwa ihr Passwort wechseln. Diese Programme sollen hier noch kurz dargestellt werden. Ich habe - wo immer es noch keine deutsche Handbuchseite gab - die jeweiligen Handbuchseiten übersetzt und hier mit aufgenommen.

Die beste Art, diese Programme kennenzulernen, ist es, möglichst viel mit ihnen herumzuspielen, neue User anzulegen, zu verändern, wieder zu löschen usw. Nur die Praxis mit Programmen führt im Endeffekt zur Vertrautheit mit dem Umgang...

### Das Anlegen neuer User mit useradd

Das Programm useradd dient dazu, einen neuen User anzulegen, ohne die Handarbeit mit Editoren auf den Dateien passwd, shadow, group und gshadow. Wir haben oben schon gesehen, daß das Format z.B. der Datumsangaben (Tage seit dem 1. Januar 1970) nicht unbedingt geeignet ist, von Hand gesetzt zu werden. Das Programm useradd nimmt uns diese Arbeit ab.

Die genaue Anwendung dieses Programms entnehmen Sie der Handbuchseite, hier nur noch ein paar Tipps aus der Praxis:

Wenn mit useradd ein neuer User angelegt werden soll, dann reicht oft nur die Angabe des Namens, weil die Voreinstellungen in der Regel sehr vernünftige Werte beinhalten. Oft wird jedoch vergessen, daß das Programm ohne die Option -m das Homeverzeichnis des Users nicht anlegt. Daran sollten Sie denken.

Die Angabe eines Passwortes ist selten von Nöten. Wird useradd ohne Passwort angegeben, so sperrt es den Account zunächst einmal durch ein ! im Passwortfeld der Datei /etc/shadow. Später können Sie mit dem Programm passwd ein Passwort vergeben.

### Löschen von Usereinträgen mit userdel

Das Löschen von Useraccounts übernimmt das Programm userdel. Wird zusätzlich noch die Option -r angegeben, so wird gleich das Homeverzeichnis des Users mitgelöscht. Andere Dateien im System, die diesem User gehören werden nicht gesucht. Hier muß "von Hand" gesucht werden, das nimmt uns userdel nicht ab. Aber wir kennen ja jetzt das Programm find, mit dem wir solche Suchen in einem Rutsch erledigen können...

### Ändern von Usereinstellungen mit usermod

Um die ganzen Eigenschaften eines bereits bestehenden Users zu verändern gibt es das Programm usermod. Hier können die ganzen Einstellungen verändert werden, die wir schon beim Anlegen eines Users angeben konnten. Zusätzlich kann auch der Name des Users noch verändert werden.

Bei der Änderung verschiedener Eigenschaften kommt es aber immer wieder zu Komplikationen, ein paar davon seien hier genannt:

- Ändern der UserID
  Wird die UserID eines Users verändert, dann stimmen die Rechte des Users nicht mehr. Denn die Rechte des Users auf Dateien werden ja über den Eintrag der UID in der Inode bestimmt. Aus diesem Grund verändert usermod zwar die UserID aller Dateien und Verzeichnisse innerhalb des Homeverzeichnisses, jedoch nicht die der restlichen Dateien im System. Das muß wiederum mit find erledigt werden.
- Ändern des Usernamens
  Wird der Username geändert, so verändert sich damit nicht automatisch der Name des Homeverzeichnisses. Das kann zu Inkonsistenzen führen, wenn es die Regel ist, daß alle User ihre Homeverzeichnisse in `/home/`Username vorfinden, nur der User Otto hat seins in /home/maier... Es ist kein technisches Problem, aber das Leben wird einfacher, wenn man sich an Prinzipien hält.
- Ändern des Homeverzeichnisses
  Wenn also auch das Homeverzeichnis geändert werden soll, so darf nicht vergessen werden, die Option -m mit anzugeben, sonst werden die Dateien des alten Homeverzeichnisses nicht ins neue verschoben bzw. das neue wird gar nicht erst angelegt.

### Ändern der Passwort-Gültigkeit mit chage

Speziell für die Einträge in `/etc/shadow` existiert noch das Programm chage, das entweder über Kommandozeilenparameter oder - falls keine Parameter angegeben wurden - interaktiv die Einstellungen dieser Werte erlaubt.

### Ändern von Usereigenschaften mit passwd, newgrp, chsh und chfn

Alle drei Programme useradd, userdel und usermod sind Werkzeuge des Systemverwalters und werden nur von ihm aufgerufen. Damit auch Normaluser ein paar Dinge - zumindestens für ihren eigenen Account - ändern dürfen gibt es noch ein paar Programme, deren Aufgaben sich zum Teil mit denen der drei letztgenannten überschneiden - passwd, newgrp, chsh und chfn.

Diese Programme ändern alle (mit Ausnahme von newgrp) verschiedene Einstellungen in einer oder mehreren der vier oben beschriebenen Dateien passwd, shadow, group und gshadow. Die genaue Anwendung entnehmen Sie wiederum den Handbuchseiten. Hier eine kurze Beschreibung, was die einzelnen Programme anbieten und was Normaluser damit anstellen können:

- passwd
  Mit diesem Programm kann ein Normaluser sein Passwort ändern. Ein Verwalter einer Gruppe kann damit zusätzlich auch das Gruppenpasswort dieser Gruppe ändern, der Systemverwalter kann alle Passwörter aller User und Gruppen ändern.
- newgrp
  Mit diesem Kommando kann ein User kurzfristig seine Logingruppe wechseln. Das heißt, daß Dateien, die er anlegt jetzt zu dieser neuen Gruppe gehören, statt zur eigentlichen Logingruppe des Users. Wenn der User selbst nicht Mitglied der gewünschten Gruppe ist, jedoch das Gruppenpasswort kennt, so kann er nach der Eingabe des Gruppenpassworts trotzdem kurzfristig Mitglied dieser Gruppe werden. Dieses Programm ändert nichts an den Systemdateien, beim nächsten Einloggen ist alles so wie vorher.
- chsh
  Jeder User kann mit diesem Programm den Eintrag der Startshell in seinem Useraccount in /etc/passwd ändern. Dieses Programm ändert nur diesen Eintrag, erst durch ein Logout mit anschließendem erneuten Login wird die Änderung spürbar. Damit ein User nicht jedes beliebige Programm hier eintragen kann, muß die gewünschte Shell in `/etc/shells` aufgelistet sein. Der Systemverwalter kann mit diesem Programm jedem User eine andere Startshell zuweisen.
- chfn
  Jede Zeile der /etc/passwd enthält ein Kommentarfeld, in dem verschiedene Informationen über einen User eingegeben werden können. Jeder User kann diese Informationen selbst ändern oder löschen (mit Ausnahme eines Feldes). Dazu benutzt er das Programm chfn (CHange Full Name). Selbstverständlich kann ein Normaluser damit nur das Feld seiner eigenen Zeile ändern, der Systemverwalter kann aber damit die Einträge aller User editieren.

Die beiden letzten Programme arbeiten auch interaktiv. Wenn keinerlei Parameter angegeben werden, so fragen diese Programme die Angaben ab.

### Verwaltung der Gruppen

Die Aufgaben zum Verwalten von Gruppen entsprechen im Wesentlichen denen zur Verwaltung der User. Und so existieren für den Systemverwalter (und nur für ihn) hier genau die drei Befehle, die wir für die Userverwaltung schon hatten:

- groupadd
  Zum Anlegen von Gruppen
- groupmod
  Zum Ändern der bestehenden Eigenschaften der Gruppen
- groupdel
  Zum Löschen von Gruppen.

Mit der Einführung der Shadow-Gruppen, also der verschlüsselten Speicherung der Gruppenpasswörter in der Datei `/etc/gshadow` hielt eine andere Neuerung ihren Einzug, die Möglichkeit, daß bestimmte User zu Gruppenadministratoren werden. Ein Gruppenadministrator hat bestimmte Rechte für die Gruppe, deren Verwalter er ist. Er kann

- User in eine Gruppe als Mitglied aufnehmen
- Mitglieder einer Gruppe von der Gruppenmitgliedschaft ausschließen
- Gruppenpasswörter setzen, verändern und löschen.

Für diese Aufgabe steht ihm das Programm gpasswd zur Verfügung. Dieses Programm ist prinzipiell für zwei Aufgabenbereiche geeignet:

- Der Systemverwalter kann damit den Gruppenverwalter bestimmen.
- Der Gruppenverwalter kann damit die oben genannten Aufgaben erledigen.

Und schließlich gibt es noch das Programm groups, das jeder User dazu nutzen kann, herauszufinden in welchen Gruppen er eigentlich Mitglied ist. Dieses Programm ist eigentlich nur ein Shellscript, das wiederum den Befehl id nutzt. Id ist ein Programm, mit dem herausgefunden werden kann, welche UserID, GruppenIDs usw ein User besitzt.

### Überprüfung der Konsistenz mit pwck und grpck

Da all diese Verwaltungsaufgaben für die oben beschriebenen User- und Gruppendateien viel Aufwand ist, gibt es noch die Programme pwck (Password-Check) und grpck (Group-Check), die die interne Konsistenz dieser Dateien überprüfen. Diese Programme sind naturgemäß Werkzeuge des Systemverwalters, da außer ihm niemand die shadow-Dateien lesen darf.

### Konvertierung der User- und Gruppendatenbanken

In seltenen Fällen kann es notwendig sein, die Passwort- und Gruppendatenbanken entweder von der alten (shadow-losen) Version in die moderne (shadow-basierte) Version zu konvertieren oder umgekehrt. Zu diesem Zweck stehen uns die folgenden Programme zur Verfügung:

pwconv | Konvertiert die alte /etc/passwd Datei in eine passwd/shadow Kombination.
pwunconv | Konvertiert eine moderne passwd/shadow Kombination in eine alte passwd Datei.
grpconv | Konvertiert die alte /etc/group Datei in eine group/gshadow Kombination.
grpunconv | Konvertiert eine moderne group/gshadow Kombination in eine alte group Datei.