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 haché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 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 ;
  • password: this is a password encrypted by a one-way function (crypt), relying on DES, MD5, SHA-256 or SHA-512. The special value “x” indicates that the encrypted password is stored in /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.
As mentioned before, one can edit this file directly. But there are more elegant ways to apply changes, which are described in Section 8.4.3, « Modifier un compte ou mot de passe existant ».

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.
One can expire passwords using this file or set the time until the account is disabled after the password has expired.

8.4.3. Modifier un compte ou mot de passe existant

The following commands allow modification of the information stored in specific fields of the user databases: passwd permits a regular user to change their password, which in turn, updates the /etc/shadow file (chpasswd allows administrators to update passwords for a list of users in batch mode); chfn (CHange Full Name), reserved for the super-user (root), modifies the GECOS field. chsh (CHange SHell) allows the user to change their login shell; however, available choices will be limited to those listed in /etc/shells; the administrator, on the other hand, is not bound by this restriction and can set the shell to any program of their choosing.
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.
Besides these tools the usermod command allows to modify all the details mentioned above.

8.4.4. Bloquer un compte

You may find yourself needing to “disable an account” (lock out a user), as a disciplinary measure, for the purposes of an investigation, or simply in the event of a prolonged or definitive absence of a user. A disabled account means the user cannot login or gain access to the machine. The account remains intact on the machine and no files or data are deleted; it is simply inaccessible. This is accomplished by using the command passwd -l user (lock). Re-enabling the account is done in similar fashion, with the -u option (unlock). This, however, only prevents password-based logins by the user. The user might still be able to access the system using an SSH key (if configured). To prevent even this possibility you have to expire the account as well using either chage -E 1user or usermod -e 1 user (giving a value of -1 in either of these commands will reset the expiration date to never). To (temporarily) disable all user accounts just create the file /etc/nologin.
You can disable a user account not only by locking it as described above, but also by changing its default login shell (chsh -s shell user). With the latter changed to /usr/sbin/nologin, a user gets a polite message informing that a login is not possible, while /bin/false just exits while returning false. There is no switch to restore the previous shell. You have to get and keep that information before you change the setting. These shells are often used for system users which do not require any login availability.

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é B.A.-BA Travailler avec plusieurs groupes) ;
  • 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 addgroup et delgroup 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 gpasswd groupe modifiera le mot de passe d'un groupe, tandis que la commande gpasswd -r groupe le supprimera.