Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


12.6 Benutzerkonten

Benutzerkonten und Gruppen werden allein durch die operating-system-Deklaration des Betriebssystems verwaltet. Sie werden mit den user-account- und user-group-Formen angegeben:

(user-account
  (name "alice")
  (group "users")
  (supplementary-groups '("wheel"   ;zur sudo-Nutzung usw. berechtigen
                          "audio"   ;Soundkarte
                          "video"   ;Videogeräte wie Webcams
                          "cdrom")) ;die gute alte CD-ROM
  (comment "Bobs Schwester"))

Hier sehen Sie ein Benutzerkonto, das eine andere Shell und ein geändertes Persönliches Verzeichnis benutzt (die Vorgabe wäre "/home/bob"):

(user-account
  (name "bob")
  (group "users")
  (comment "Alices Bruder")
  (shell (file-append zsh "/bin/zsh"))
  (home-directory "/home/robert"))

Beim Hochfahren oder nach Abschluss von guix system reconfigure stellt das System sicher, dass nur die in der operating-system-Deklaration angegebenen Benutzerkonten und Gruppen existieren, mit genau den angegebenen Eigenschaften. Daher gehen durch direkten Aufruf von Befehlen wie useradd erwirkte Erstellungen oder Modifikationen von Konten oder Gruppen verloren, sobald rekonfiguriert oder neugestartet wird. So wird sichergestellt, dass das System genau so funktioniert, wie es deklariert wurde.

Datentyp: user-account

Objekte dieses Typs repräsentieren Benutzerkonten. Darin können folgende Komponenten aufgeführt werden:

name

Der Name des Benutzerkontos.

group

Dies ist der Name (als Zeichenkette) oder die Bezeichnung (als Zahl) der Benutzergruppe, zu der dieses Konto gehört.

supplementary-groups (Vorgabe: '())

Dies kann optional als Liste von Gruppennamen angegeben werden, zu denen dieses Konto auch gehört.

uid (Vorgabe: #f)

Dies ist entweder der Benutzeridentifikator dieses Kontos (seine „User ID“) als Zahl oder #f. Bei Letzterem wird vom System automatisch eine Zahl gewählt, wenn das Benutzerkonto erstellt wird.

comment (Vorgabe: "")

Ein Kommentar zu dem Konto, wie etwa der vollständige Name des Kontoinhabers.

Beachten Sie, dass Benutzer den für ihr Benutzerkonto hinterlegten echten Namen beliebig ändern können, außer es handelt sich um „System“-Benutzerkonten. Den in /etc/passwd gespeicherten Namen können sie mit dem Befehl chfn ändern. Wenn sie das tun, hat der gewählte Name Vorrang vor dem vom Systemadministrator auserkorenen Namen. Rekonfigurieren ändert den Namen nicht.

home-directory

Der Name des Persönlichen Verzeichnisses („Home“-Verzeichnis) für dieses Konto.

create-home-directory? (Vorgabe: #t)

Zeigt an, ob das Persönliche Verzeichnis für das Konto automatisch erstellt werden soll, falls es noch nicht existiert.

shell (Vorgabe: Bash)

Ein G-Ausdruck, der den Dateinamen des Programms angibt, das dem Benutzer als Shell dienen soll (siehe G-Ausdrücke). Auf die Programmdatei der Bash-Shell würden Sie zum Beispiel so verweisen:

(file-append bash "/bin/bash")

… und so auf die Programmdatei von Zsh:

(file-append zsh "/bin/zsh")
system? (Vorgabe: #f)

Dieser boolesche Wert zeigt an, ob das Konto ein „System“-Benutzerkonto ist. Systemkonten werden manchmal anders behandelt, zum Beispiel werden sie auf grafischen Anmeldebildschirmen nicht aufgeführt.

password (Vorgabe: #f)

Normalerweise lassen Sie dieses Feld auf #f und initialisieren Benutzerpasswörter als root mit dem passwd-Befehl. Die Benutzer lässt man ihr eigenes Passwort dann mit passwd ändern. Mit passwd festgelegte Passwörter bleiben natürlich beim Neustarten und beim Rekonfigurieren erhalten.

Wenn Sie aber doch ein anfängliches Passwort für ein Konto voreinstellen möchten, muss dieses Feld hier das verschlüsselte Passwort als Zeichenkette enthalten. Sie können dazu die Prozedur crypt benutzen.

(user-account
  (name "charlie")
  (group "users")

  ;; Ein mit SHA-512 gehashtes initiales Passwort.
  (password (crypt "InitialPassword!" "$6$abc")))

Anmerkung: Der Hash dieses initialen Passworts wird in einer Datei im /gnu/store abgelegt, auf die alle Benutzer Lesezugriff haben, daher ist Vorsicht geboten, wenn Sie diese Methode verwenden.

Siehe Passphrase Storage in Referenzhandbuch der GNU-C-Bibliothek für weitere Informationen über Passwortverschlüsselung und Encryption in Referenzhandbuch zu GNU Guile für Informationen über die Prozedur crypt in Guile.

Benutzergruppen-Deklarationen sind noch einfacher aufgebaut:

(user-group (name "students"))
Datentyp: user-group

Dieser Typ gibt, nun ja, eine Benutzergruppe an. Es gibt darin nur ein paar Felder:

name

Der Name der Gruppe.

id (Vorgabe: #f)

Der Gruppenbezeichner (eine Zahl). Wird er als #f angegeben, wird automatisch eine neue Zahl reserviert, wenn die Gruppe erstellt wird.

system? (Vorgabe: #f)

Dieser boolesche Wert gibt an, ob es sich um eine „System“-Gruppe handelt. Systemgruppen sind solche mit einer kleinen Zahl als Bezeichner.

password (Vorgabe: #f)

Wie, Benutzergruppen können ein Passwort haben? Nun ja, anscheinend schon. Wenn es nicht auf #f steht, gibt dieses Feld das Passwort der Gruppe an.

Um Ihnen das Leben zu erleichtern, gibt es eine Variable, worin alle grundlegenden Benutzergruppen aufgeführt sind, die man erwarten könnte:

Scheme-Variable: %base-groups

Die Liste von Basis-Benutzergruppen, von denen Benutzer und/oder Pakete erwarten könnten, dass sie auf dem System existieren. Dazu gehören Gruppen wie „root“, „wheel“ und „users“, sowie Gruppen, um den Zugriff auf bestimmte Geräte einzuschränken, wie „audio“, „disk“ und „cdrom“.

Scheme-Variable: %base-user-accounts

Diese Liste enthält Basis-Systembenutzerkonten, von denen Programme erwarten können, dass sie auf einem GNU/Linux-System existieren, wie das Konto „nobody“.

Beachten Sie, dass das Konto „root“ für den Administratornutzer nicht dazugehört. Es ist ein Sonderfall und wird automatisch erzeugt, egal ob es spezifiziert wurde oder nicht.


Nächste: Tastaturbelegung, Vorige: Swap-Speicher, Nach oben: Systemkonfiguration   [Inhalt][Index]