/etc/shadow est un fichier avec un rôle important dans la configuration des utilisateurs Linux.
Il existe plusieurs schémas d’authentification différents qui peuvent être utilisés sur les systèmes Linux. Le schéma standard le plus couramment utilisé consiste à effectuer une authentification par rapport aux fichiers /etc/passwd et /etc/shadow.
Le fichier /etc/shadow sous Linux est un fichier à connaître pour l’administration système. Voici ce que vous devez savoir à ce sujet.

Table des matières
Qu’est-ce que /etc/shadow
C’est un fichier de configuration des utilisateurs Linux.
Il est présent dans toutes les distributions Linux.
/etc/shadow est un fichier texte qui contient les informations sur les mots de passe des utilisateurs du système.
Il appartient à l’utilisateur root et au groupe shadow et dispose de 640 permissions.
Lorsque vous créez ou modifiez un mot de passe sous Linux, le système le hache et le stocke dans le fichier shadow. Toutes les règles de mot de passe attribuées par l’administrateur, telles que les dates d’expiration et les périodes d’inactivité, resteront également ici. Le fichier fantôme peut ensuite indiquer aux protocoles d’authentification si le mot de passe d’un utilisateur est correct, par exemple, ou quand il a expiré.
Vous ne devez jamais modifier directement le fichier shadow. Il est maintenu par des processus automatisés et n’est pas destiné à être modifié par les utilisateurs réguliers. Néanmoins, les informations qu’il contient peuvent vous être utiles, il vaut donc la peine d’y jeter un coup d’œil.
Quel est le rôle du fichier /etc/shadow ?
Il stocke les informations d’authentification des utilisateurs Linux.
Notamment, il stocke le mot de passe de l’utilisateur de manière chiffré.
Quelle est la structure et format du fichier /etc/shadow ?
La structure du fichier est assez simple, on a la liste des utilisateurs avec le mot de passe haché et les dates de changements de mot de passe, etc.
Les données sont stockées sous forme de champs comme un fichier CSV.
Les champs sont séparés par le caractère :.
Voici un descriptif du fichier /etc/shadow :
malekalmorte:$6$.n.:17736:0:99999:7::: [--] [----] [---] - [---] ---- | | | | | |||+-----------> 9. Inutilisé | | | | | ||+------------> 8. Date d'expiration | | | | | |+-------------> 7. Période d'inactivité | | | | | +--------------> 6. Période d'avertissement | | | | +------------------> 5. Âge maximal du mot de passe | | | +----------------------> 4. Âge minimal du mot de passe | | +--------------------------> 3. Dernier changement de mot de passe | +---------------------------------> 2. Mot de passe chiffré +----------------------------------------> 1. Nom d'utilisateur
Ou encore en respectant le format :
[nom d'utilisateur] :[mot de passe] :[date du dernier changement de mot de passe] :[âge minimum du mot de passe] :[âge maximum du mot de passe] :[période d'avertissement] :[période d'inactivité] :[date d'expiration] :[inutilisé]
Le nom d’utilisateur
C’est la chaîne que vous tapez lorsque vous vous connectez au système. Le compte d’utilisateur qui existe sur le système.
Le chiffrement du mot de passe
Le $ indique le type de HASH :
- $1$ = MD5 hashing algorithm.
- $2$ =Blowfish Algorithm.
- $2a$=eksblowfish Algorithm
- $5$ =SHA-256 Algorithm
- $6$ =SHA-512 Algorithm
Si le champ du mot de passe contient un astérisque (*) ou un point d’exclamation (!), l’utilisateur ne pourra pas se connecter au système à l’aide de l’authentification par mot de passe.
En effet, il est possible de verrouiller (lock) un utilisateur, par exemple avec la commande usermod :
sudo usermod -L malekalmorte
Dernier changement de mot de passe
Il s’agit de la date à laquelle le mot de passe a été modifié pour la dernière fois. Le nombre de jours est compté depuis le 1er janvier 1970 (date d’époque).
Pour rappel le changement de mot de passe d’un utilisateur se fait à l’aide de la commande passwd :
sudo passwd <nom utilisateur>
Age maximal/minimal du mot de passe
L’administrateur Linux peut imposer/interdire un changement de mot de passe à travers un âge minimal et maximal de vie d’un mot de passe.
- Âge minimum du mot de passe : Le nombre de jours qui doivent s’écouler avant que le mot de passe de l’utilisateur puisse être modifié. En règle générale, il est défini sur zéro, ce qui signifie qu’il n’y a pas d’âge minimum pour le mot de passe.
- Âge maximal du mot de passe : Le nombre de jours après le mot de passe de l’utilisateur doit être changé. Par défaut, ce nombre est défini sur 99999.
Période d’avertissement
Le nombre de jours avant l’expiration du mot de passe pendant lesquels l’utilisateur est averti que le mot de passe doit être changé.
Période d’inactivité
Le nombre de jours après l’expiration du mot de passe utilisateur avant que le compte utilisateur ne soit désactivé. Généralement, ce champ est vide.
Date d’expiration
La date à laquelle le compte a été désactivé. Il est représenté comme une date d’époque.
Exemple d’entrée
malekalmorte:$6$zZvrLOa4Y190sytgQ$z4fFr...:1651566427:0:60:7:14::
- Le mot de passe est crypté avec SHA-512
- Le mot de passe a été modifié pour la dernière fois le 3 mai 2022 – 1651566427
- Il n’y a pas d’âge minimum pour le mot de passe
- Le mot de passe doit être changé au moins tous les 60 jours
- L’utilisateur recevra un message d’avertissement sept jours avant la date d’expiration du mot de passe
- Si l’utilisateur n’essaie pas de se connecter au système 14 jours après l’expiration du mot de passe, le compte sera désactivé
- Il n’y a pas de date d’expiration du compte
Liens
- Le fonctionnement des utilisateurs et groupes sur Linux
- Gérer les utilisateurs/groupes sur Linux en ligne de commandes (adduser, addgroup, usermod, passwd, …)
- Le fichier /etc/group dans Linux
- Le fichier /etc/passwd dans Linux
- Comment utiliser la commande passwd de Linux avec des exemples
- La commande useradd : utilisations et exemples
- Utilisateur et groupes Ubuntu : comment ajouter, supprimer
- Ubuntu : comment passer un utilisateur en administrateur
- Comment lister les utilisateurs de Linux
- Comment lister les groupes dans Linux
- Comment utiliser la commande su avec des exemples sur Linux
- sudo : comment utiliser le configurer sudoers sur Linux (Debian, Ubuntu, Mint …)
- Comment ajouter un utilisateur à sudo (sudoers) dans Ubuntu ou Debian
- Comment utiliser la commande su avec des exemples sur Linux
- Qu’est-ce que /etc/shadow et son rôle