Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


12.6 Comptes utilisateurs

Les comptes utilisateurs et les groupes sont gérés entièrement par la déclaration operating-system. Ils sont spécifiés avec les formes user-account et user-group :

(user-account
  (name "alice")
  (group "users")
  (supplementary-groups '("wheel"   ;permet d'utiliser sudo, etc.
                          "audio"   ;carte son
                          "video"   ;périphériques réseaux comme les webcams
                          "cdrom")) ;le bon vieux CD-ROM
  (comment "Bob's sister"))

Voici un compte d’utilisateur·rice qui utilise un shell différent et un répertoire d’accueil personnalisé (le répertoire par défaut serait "/home/bob") :

(user-account
  (name "bob")
  (group "users")
  (comment "Alice's bro")
  (shell (file-append zsh "/bin/zsh"))
  (home-directory "/home/robert"))

Lors du démarrage ou à la fin de guix system reconfigure, le système s’assure que seuls les comptes utilisateurs et les groupes spécifiés dans la déclaration operating-system existent, et avec les propriétés spécifiées. Ainsi, les modifications ou les créations de comptes ou de groupes effectuées directement en invoquant des commandes comme useradd sont perdue à la reconfiguration ou au redémarrage. Cela permet de s’assurer que le système reste exactement tel que déclaré.

Type de données :user-account

Les objets de se type représentent les comptes utilisateurs. Les membres suivants peuvent être spécifiés :

name

Le nom du compte utilisateur.

group

C’est le nom (une chaîne) ou un identifiant (un nombre) du groupe utilisateur auquel ce compte appartient.

supplementary-groups (par défaut : '())

Éventuellement, cela peut être définie comme une liste de noms de groupes auxquels ce compte appartient.

uid (par défaut : #f)

C’est l’ID utilisateur de ce compte (un nombre) ou #f. Dans ce dernier cas, le nombre est choisi automatiquement par le système à la création du compte.

comment (par défaut : "")

Un commentaire à propos du compte, comme le nom complet de l’utilisateur.

Remarquez que, pour les compte non-systèmes, vous êtes libres de changer votre nom réel tel qu’il apparait dans /etc/passwd avec la commande chfn. Lorsque vous faites cela, votre choix prévaut sur le choix de l’administrateur ou l’administratrice système ; la reconfiguration ne change pas votre nom.

home-directory

C’est le nom du répertoire personnel du compte.

create-home-directory? (par défaut : #t)

Indique si le répertoire personnel du compte devrait être créé s’il n’existe pas déjà.

shell (par défaut : Bash)

C’est une G-expression qui désigne le nom de fichier d’un programme utilisé comme shell (voir G-Expressions). Par exemple, vous pourriez vous référer à l’exécutable Bash comme ceci :

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

... et à l’ exécutable Zsh comme ceci :

(file-append zsh "/bin/zsh")
system? (par défaut : #f)

C’est une valeur booléenne qui indique si le compte est un compte « système ». Les comptes systèmes sont parfois traités à part ; par exemple, les gestionnaires de connexion graphiques ne les liste pas.

password (par défaut : #f)

Vous laisseriez normalement ce champ à #f et initialiseriez les mots de passe utilisateurs en tant que root avec la commande passwd, puis laisseriez l’utilisateur le changer avec passwd. Les mots de passes définis avec passwd sont bien sûr préservés après redémarrage et reconfiguration.

Si vous voulez vraiment définir un mot de passe pour un compte, alors ce champ doit contenir le mot de passe chiffré, comme une chaîne de caractère. Vous pouvez utiliser la procédure crypt pour cela :

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

  ;; Spécifie un mot de passe initial hashé avec sha512.
  (password (crypt "InitialPassword!" "$6$abc")))

Remarque : Le hash de ce mot de passe initial sera disponible dans un fichier dans /gnu/store, lisible par tous les utilisateurs, donc cette méthode est à utiliser avec soin.

Voir Passphrase Storage dans The GNU C Library Reference Manual, pour plus d’information sur le chiffrement des mots de passe et Encryption dans GNU Guile Reference Manual, pour des informations sur la procédure crypt de Guile.

Les déclarations de groupes sont encore plus simple :

(user-group (name "students"))
Type de données :user-group

C’est le type pour, hé bien, les comptes utilisateurs. Il n’y a que quelques champs :

name

Le nom du groupe.

id (par défaut : #f)

L’identifiant du groupe (un nombre). S’il est #f, un nouveau nombre est alloué automatiquement lorsque le groupe est créé.

system? (par défaut : #f)

Cette valeur booléenne indique si le groupe est un groupe « système ». les groupes systèmes ont un numéro d’ID bas.

password (par défaut : #f)

Quoi, les groupes utilisateurs peuvent avoir des mots de passe ? On dirait bien. À moins que la valeur ne soit #f, ce champ spécifie le mot de passe du groupe.

Par simplicité, une variable liste les groupes utilisateurs de base auxquels on pourrait s’attendre :

Variable Scheme :%base-groups

C’est la liste des groupes utilisateur de base que les utilisateurs et les paquets s’attendent à trouver sur le système. Cela comprend des groupes comme « root », « wheel » et « users », ainsi que des groupes utilisés pour contrôler l’accès à certains périphériques, comme « audio », « disk » et « cdrom ».

Variable Scheme :%base-user-accounts

C’est la liste des compte du système de base que les programmes peuvent s’attendre à trouver sur un système GNU/Linux, comme le compte « nobody ».

Remarquez que le compte « root » n’est pas défini ici. C’est un cas particulier et il est automatiquement ajouté qu’il soit spécifié ou non.


Suivant: Disposition du clavier, Précédent: Espace d’échange, Monter: Configuration du système   [Table des matières][Index]