Suivant: Disposition du clavier, Précédent: Espace d’échange, Monter: Configuration du système [Table des matières][Index]
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é.
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"))
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 :
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 ».
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]