Ein Benutzerkonto umfasst mehr als nur einen einfachen Nutzernamen. Entdecken Sie, wie Sie alle mit einem Linux-Benutzerkonto verbundenen Metadaten über die Kommandozeile definieren und verändern können.
Was steckt in einem Namen?
Bei der Nutzung eines Linux- oder Unix-ähnlichen Systems besitzt man stets ein Benutzerkonto. Der diesem Konto zugewiesene Name ist Ihr Benutzerkontoname, der für die Anmeldung verwendet wird. Dieser Name dient standardmäßig auch als Name Ihrer Login-Gruppe und Ihres Home-Verzeichnisses. Alle diese Elemente teilen sich denselben Identifikator.
Zusätzlich können weitere Informationen zu jedem Benutzerkonto gespeichert werden. Reale Daten wie der vollständige Name einer Person, ihre Büronummer oder die geschäftliche Telefonnummer lassen sich definieren und hinterlegen. Tatsächlich können Benutzerkonten mit beliebigen Informationen verknüpft werden.
Dies erweist sich als besonders nützlich für Systemadministratoren, die mehrere Benutzerkonten auf ihren Rechnern verwalten müssen. Aber auch für Einzelanwender kann es von Interesse sein, die Vorgänge im Hintergrund genauer zu verstehen.
Das GECOS-Feld
In der Anfangszeit von Unix verfügten die Entwickler über keine eigenen Drucker. Ihre Druckaufträge mussten sie auf einem General Electric Mainframe mit dem General Electric Comprehensive Operating System (GECOS) ausführen. Um dies zu ermöglichen, speicherten die Benutzer auf den Unix-Systemen die Zugangsdaten eines Kontos auf dem GECOS-System ab.
Das GECOS-Feld wurde geschaffen, um diese Anmeldeinformationen zu verwalten. Diese spezielle Notwendigkeit ist jedoch längst Vergangenheit, und das GECOS-Feld wurde umfunktioniert, um andere Details über den Kontobesitzer zu speichern. Obwohl es eine neue Funktion erfüllt, hat es seinen ursprünglichen Namen behalten und wird weiterhin als GECOS-Feld bezeichnet.
Dieses Feld wird zusammen mit weiteren Informationen des Benutzerkontos in der Datei `/etc/passwd` gesichert:
Der Benutzername des Kontos.
Die Benutzer-ID.
Die Gruppen-ID.
Der Pfad zum Home-Verzeichnis des Benutzerkontos.
Die Shell, die beim Login des Benutzers gestartet wird.
Die Befehle finger und pinky ermöglichen es, diese Informationen abzurufen.
Der chfn-Befehl
Mit `chfn` (Change Finger Information) kann man die im GECOS-Feld hinterlegten Informationen festlegen und bearbeiten. Die Daten werden als durch Kommas getrennte Liste innerhalb dieses Feldes verwaltet.
Der `chfn`-Befehl war bereits auf Ubuntu 18.04.1 und Manjaro 18.1.0 installiert. Unter Fedora 31 musste er nachinstalliert werden. Hierfür dient folgender Befehl:
sudo dnf install util-linux-user
Sehen wir uns an, welche Informationen `finger` über den Benutzer „dave“ finden kann. Um möglichst viele Details zu bekommen, nutzen wir die Option `-l` (langes Format):
finger dave -l
Folgende Daten könnten angezeigt werden:
Es werden der Benutzername des Kontos, das Home-Verzeichnis und die Standard-Shell angezeigt. All diese Angaben beziehen sich auf das Benutzerkonto, jedoch nicht auf die reale Person, die dieses Konto verwendet. Mit dem Befehl `chfn` können wir zusätzliche Informationen über diese Person speichern.
chfn dave
Die Nutzung von `chfn` auf diese Weise startet einen kurzen, interaktiven Prozess. Sie werden aufgefordert, für jede Information, die das GECOS-Feld enthalten kann, einen Wert einzugeben. Der aktuelle Wert für jede Eingabe wird in Klammern `[]` angezeigt. Wenn Sie die vorhandenen Daten behalten möchten, drücken Sie die „Enter“-Taste, um den Wert in den Klammern beizubehalten.
Die eingegebenen Daten waren:
Zimmernummer: 512
Arbeitstelefon: 555-4567
Telefon zu Hause: 555-5432
Überprüfen wir, ob `finger` diese neuen Informationen erfasst:
finger dave -l
Ja, es funktioniert. Es ist jedoch möglich, dass Sie bemerkt haben, dass Sie nicht dazu aufgefordert wurden, den vollständigen Namen zu ändern. Dies ist nur möglich, wenn Sie `sudo` verwenden. Aber es ist nicht notwendig, die gesamte `chfn`-Sitzung erneut zu durchlaufen, nur weil man vergessen hat, `sudo` zu verwenden. Wir können jeden einzelnen Wert separat ändern.
Ändern einzelner Werte
Mit der Option `-f` (vollständiger Name) und `sudo` können wir den vollständigen Namen des Kontobesitzers festlegen:
sudo chfn -f "Dave McKay" dave
Und mit einer erneuten Abfrage über `finger`:
Der vollständige Name wurde hinzugefügt.
Es gibt weitere Optionen, um die Zimmernummer, die private Telefonnummer und die geschäftliche Telefonnummer zu ändern. Für die Zimmernummer (Büronummer) verwenden Sie die Option `-r` (Zimmernummer):
sudo chfn -r 633 dave
In einigen Distributionen kann anstelle der Option `-r` auch `-o` (Büroraumnummer) verwendet werden. Weitere Details dazu folgen. Um die Optionen für Ihre spezifische `chfn`-Version anzuzeigen, nutzen Sie:
man chfn
Um die Bürotelefonnummer zu ändern, verwenden Sie die Option `-w` (Arbeitstelefon):
sudo chfn -w 555-1122 dave
Und um die private Telefonnummer zu bearbeiten, verwenden Sie die Option `-h` (private Telefonnummer):
sudo chfn -h 555-6576 dave
Lassen Sie uns erneut `finger` nutzen, um zu verifizieren, ob alle Änderungen erfolgreich übernommen wurden:
finger dave -l
Alles erfolgreich. Alle Befehle haben wie erwartet funktioniert und die entsprechenden Daten wurden aktualisiert.
`chfn` für andere Benutzerkonten nutzen
Bisher haben wir unsere eigenen Daten bearbeitet. Wie sieht es mit den GECOS-Informationen anderer Nutzer aus? Es ist genauso einfach. Lediglich die Nutzung von `sudo` ist erforderlich. Betrachten wir die Daten des Benutzerkontos „mary“:
finger mary -l
Für dieses Konto sind die Standarddaten hinterlegt. Fügen wir weitere Informationen hinzu:
sudo chfn mary
Wir durchlaufen den gleichen interaktiven Prozess und werden aufgefordert, für jeden Wert einen Eintrag zu machen. Da `sudo` benutzt wurde, werden wir auch nach dem vollständigen Namen gefragt.
Warten Sie mal, was ist das letzte Element, „Sonstiges“?
Diese Option wird nicht von allen `chfn`-Versionen unterstützt und ist nur bei Verwendung von `sudo` sichtbar. Deshalb wurde sie zuvor, als wir (absichtlich) kein `sudo` nutzten, nicht angezeigt:
chfn dave
Der Wert „Sonstiges“ kann beliebige Informationen enthalten und hat keine vorgegebene Verwendung.
`chfn`-Versionen, die das Feld „Other“ unterstützen, bieten auch die Option `-o` (andere) an, um diesen Wert direkt zu ändern. Da es eine Konflikt zwischen `-o` für „Büronummer“ und `-o` für „Sonstiges“ gibt, nutzen manche Systeme `-r` für die „Zimmernummer“.
Mit dem Befehl `less` können wir die Daten für das Benutzerkonto „mary“ in der Datei `/etc/paswd` einsehen:
less /etc/passwd
Auf Systemen, die dies unterstützen (überprüfen Sie die Manpage für Ihre Version von `chfn`), kann das Feld „andere“ direkt mit der Option `-o` (andere) gesetzt werden:
sudo chfn -o "HTG Freelancer" dave
Und wir können die Daten für das Benutzerkonto „dave“ mit dem `less`-Befehl verifizieren:
less /etc/passwd
Das wirft eine naheliegende Frage auf: Wenn Ihre `chfn`-Version das Feld „Sonstige“ nicht unterstützt, wie können Sie es ändern? Das können wir mit dem Befehl `usermod` erreichen.
Der Befehl `usermod`
Mit dem Befehl `usermod` können Aspekte eines Benutzerkontos modifiziert werden, wie z.B. das Hinzufügen oder Entfernen des Kontos zu Gruppen und die Änderung der Standard-Shell. Es ist auch möglich, das GECOS-Feld direkt zu manipulieren.
Schauen wir uns die Zeile in der Datei `/etc/passwd` für das Benutzerkonto „mary“ genauer an. Wir nutzen `grep`, um diese Zeile zu isolieren. Dies funktioniert, da Benutzernamen eindeutig sein müssen. Es kann nur ein Benutzerkonto namens „mary“ geben.
grep mary /etc/passwd
Die Felder der Datei `/etc/passwd` werden angezeigt. Als Feldtrennzeichen dient ein Doppelpunkt `:`. Von links nach rechts sind dies:
Der Benutzername des Kontos.
Ein `x`, welches anzeigt, dass das Passwort für dieses Benutzerkonto verschlüsselt in der Datei `/etc/shadow` gespeichert ist.
Die Benutzer-ID für das Konto von „mary“.
Die Gruppen-ID für das Konto von „mary“.
Das GECOS-Feld.
Der Pfad zum Home-Verzeichnis für das Konto von „mary“.
Die Shell, die gestartet wird, wenn sich der Benutzer anmeldet.
Als Trennzeichen für die Werte innerhalb des GECOS-Feldes wird ein Komma `,` genutzt. Die Werte im GECOS-Feld sind von links nach rechts:
Vollständiger Name.
Zimmer- (oder Büro-) Nummer.
Geschäftliche Telefonnummer.
Private Telefonnummer.
Weitere Informationen.
Beachten Sie, dass der Befehl `usermod` das gesamte GECOS-Feld durch den neuen Wert ersetzt, den Sie angeben. Wenn Sie nur den vollständigen Namen der Person angeben, enthält das GECOS-Feld lediglich diesen Namen. Das bedeutet, dass Sie alle bestehenden Werte angeben müssen, die Sie behalten möchten.
Hier ist ein Beispiel. Mary wurde befördert und zieht in den vierten Stock um. Sie erhält eine neue Büronummer, eine neue geschäftliche Telefonnummer und wir werden ihren zweiten Vornamen hinzufügen. Ihr Feld „Sonstiges“ wird ebenfalls verändert. Obwohl sich ihre private Telefonnummer nicht verändert, müssen wir diese Information mit dem String an `usermod` übergeben.
Wir verwenden die Option `-c` (Kommentar) und führen den Befehl mit `sudo` aus:
sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary
Die Verwendung von `grep`, um den Inhalt der `/etc/passwd` für „mary“ anzuzeigen, beweist, dass die neuen Werte übernommen wurden:
grep mary /etc/passwd
Alles ist im Fluss, nichts bleibt
Falsche Daten sind wertlos. Wenn sich Informationen über Personen ändern – Büroumzüge, Namensänderungen, neue Rollen – können Sie deren Metadaten schnell aktualisieren, um den aktuellen Stand widerzuspiegeln.