Product SiteDocumentation Site

8.4. Base de données des utilisateurs et des groupes

La liste des utilisateurs est habituellement stockée dans le fichier /etc/passwd, alors que le fichier /etc/shadow stocke les mots de passe chiffrés. Tous deux sont de simples fichiers texte, au format relativement simple, consultables et modifiables avec un éditeur de texte. Chaque utilisateur y est décrit sur une ligne par plusieurs champs séparés par des deux-points (« : »).

8.4.1. Liste des utilisateurs : /etc/passwd

Voici la liste des champs du fichier /etc/passwd :
  • identifiant (ou login), par exemple rhertzog ;
  • mot de passe : il s'agit d'un mot de passe chiffré par la fonction à sens unique (crypt), qui utilise DES, MD5, SHA-256 ou SHA-512. La valeur spéciale « x » indique que le mot de passe chiffré est stocké dans /etc/shadow ;
  • uid : numéro unique identifiant l'utilisateur ;
  • gid : numéro unique du groupe principal de l'utilisateur (Debian crée par défaut un groupe spécifique à chacun) ;
  • GECOS : champ de renseignements qui contient habituellement le nom complet de l'utilisateur ;
  • répertoire de connexion, attribué à l'utilisateur pour qu'il y stocke ses fichiers personnels (la variable d'environnement $HOME y pointe habituellement) ;
  • programme à exécuter après la connexion. Il s'agit généralement d'un interpréteur de commandes (shell), donnant libre cours à l'utilisateur. Si l'on précise /bin/false (programme qui ne fait rien et rend la main immédiatement), l'utilisateur ne pourra pas se connecter.

8.4.2. Le fichier des mots de passe chiffrés et cachés : /etc/shadow

Le fichier /etc/shadow contient les champs suivants :
  • identifiant (ou login) ;
  • mot de passe chiffré ;
  • plusieurs champs de gestion de l'expiration du mot de passe.

8.4.3. Modifier un compte ou mot de passe existant

Quelques commandes permettent de modifier la plupart des informations stockées dans ces bases de données. Chaque utilisateur peut ainsi changer de mot de passe, sans doute le champ le plus variable, grâce à la commande passwd. chfn (CHange Full Name), réservée au super-utilisateur root, intervient sur le champ GECOS. chsh (CHange SHell) permet de changer de « shell de login », ou interpréteur de commandes de connexion, mais le choix des utilisateurs sera limité à la liste donnée dans /etc/shells — alors que l'administrateur pourra saisir le nom de programme de son choix.
Enfin, la commande chage (CHange AGE) donnera à l'administrateur la possibilité de modifier les conditions d'expiration du mot de passe (l'option -l utilisateur listant la configuration actuelle). On pourra d'ailleurs forcer l'expiration d'un mot de passe grâce à la commande passwd -e utilisateur, qui obligera l'utilisateur à changer son mot de passe à la prochaine connexion.

8.4.4. Bloquer un compte

On peut se trouver dans l'obligation de « bloquer le compte » d'un utilisateur, par mesure disciplinaire, dans le cadre d'une enquête, ou tout simplement en cas de départ prolongé ou définitif de l'utilisateur. Il s'agit en fait de l'empêcher de se connecter à nouveau, sans pour autant détruire son compte et ses fichiers. Cela s'effectue simplement par la commande passwd -l utilisateur (lock, ou bloquer). La remise en service s'effectue de même, avec l'option -u (unlock, ou débloquer).

8.4.5. Liste des groupes : /etc/group

La liste des groupes est stockée dans le fichier /etc/group, simple base de données textuelle au format comparable à celui de /etc/passwd, qui utilise les champs suivants :
  • identifiant (le nom du groupe) ;
  • mot de passe (facultatif) : il ne sert qu'à intégrer un groupe dont on n'est pas habituellement membre (avec la commande newgrp ou sg — voir encadré) ;
  • gid : numéro unique identifiant le groupe ;
  • liste des membres : liste des identifiants d'utilisateurs membres du groupe, séparés par des virgules.
Les commandes groupadd et groupdel permettent respectivement de créer et de supprimer un groupe. La commande groupmod modifie les informations d'un groupe (son gid ou son identifiant). La commande passwd -g groupe modifiera le mot de passe d'un groupe, tandis que la commande passwd -r -g groupe le supprimera.