Vérifier l’intégrité des fichiers passwd et shadow avec pwck sous Linux
Sommaire
I. Présentation
Dans ce tutoriel, nous allons étudier l'utilisation de la commande "pwck" sous Linux, un outil qui permet de vérifier l'intégrité des fichiers de comptes utilisateurs "/etc/passwd" et "/etc/shadow". L'outil pwck (Password Check) va nous aider à identifier et à corriger les erreurs courantes qui peuvent survenir dans ces fichiers.
La vérification de l'intégrité des fichiers de gestion des utilisateurs est importante pour assurer la sécurité et la stabilité d'un système Linux. Les fichiers "/etc/passwd" et "/etc/shadow" contiennent des informations critiques, respectivement sur les utilisateurs et leurs mots de passe. Une corruption ou une mauvaise configuration de ces fichiers peut entraîner des problèmes de sécurité ou des erreurs système.
Version originale de l'article : 22 novembre 2016.
II. Rappel sur les fichiers /etc/passwd et /etc/shadow
A. Le fichier /etc/passwd
Le fichier "/etc/passwd" est un fichier texte qui contient des informations de base sur les comptes utilisateur. Chaque ligne de ce fichier représente un utilisateur et contient plusieurs champs séparés par des deux-points (:
). Voici un exemple de ligne typique du fichier "/etc/passwd" :
testuser2:x:1002:1002:Utilisateurtest,12,0609112091209,0309320932093,Etage 4:/home/testuser2:/bin/bash
Ce fichier est lisible par tous les utilisateurs du système, mais modifiable uniquement par l'utilisateur "root". Pour avoir le détail des champs de ce fichier, je vous invite à consulter la ressource suivante :
B. Le fichier /etc/shadow
Le fichier "/etc/shadow" contient des informations de sécurité plus sensibles concernant les comptes utilisateur, notamment les mots de passe sous forme de hashs. Comme pour le fichier "/etc/passwd", chaque ligne de ce fichier correspond à un utilisateur et contient plusieurs champs séparés par des deux-points (:
). Voici un exemple de ligne typique du fichier /etc/shadow :
testuser2:$y$j9T$hWVugfT[...]UwbPB:19882:0:99999:7::
Par défaut, ce fichier n'est lisible et modifiable uniquement par l'utilisateur "root", cela, car il contient des informations sensibles. Pour plus de détails sur la structure du fichier /etc/shadow, je vous invite à consulter notre article sur ce sujet :
III. Vérifier l'intégrité des fichiers de gestion des utilisateurs
A. Introduction à pwck
pwck est une commande de vérification utilisée pour analyser les fichiers de comptes utilisateurs et de mots de passe pour détecter des erreurs ou des incohérences. Ces fichiers sont importants pour le bon fonctionnement du système lui-même, mais aussi des services qui y tournent et utilisent ces fichiers. La commande de base pour utiliser pwck est la suivante :
# Exécution de pwck via sudosudo pwck
# Exécution de pwck en tant que root
pwck
Cette commande va vérifier les fichiers "/etc/passwd" et "/etc/shadow" pour s'assurer de leur intégrité. Vous aurez en retour des informations concernant les incohérences ou non conformités découvertes. Voici un exemple :
user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'www-data': directory '/var/www' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/run/ircd' does not exist
pwck: no changes
B. Vérifier le fichier /etc/passwd
Si l'on souhaite vérifier uniquement le fichier "/etc/passwd", nous pouvons en spécifiant "/etc/passwd". pwck vérifie chaque ligne de ce fichier pour détecter des erreurs telles que :
- Champs manquants ou mal formés ;
- Nombre correct de champs
- Nom utilisateur unique et valide
- Validité des ID utilisateur et de groupe
- Validité et présence du groupe primaire
- Validité et présence du répertoire personnel
- Validité du shell (« login shell »)
Pour vérifier uniquement le fichier "/etc/passwd", utilisez la commande suivante :
# Vérifier l'intégrité du fichier /etc/passwd avec pwck
sudo pwck /etc/passwd
Voici un exemple de retour que nous pourrions concernant les anomalies du fichier "/etc/passwd" :
user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'www-data': directory '/var/www' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/run/ircd' does not exist
user 'vboxaddfake': program '/bin/testtest' does not exist
duplicate password entry
delete line 'mickael:x:0:0:mickael,,,,:/home/mickael/:/usr/bin/bash'? n
duplicate password entry
delete line 'mickael:x:1000:1000:mickael,,,:/home/mickael:/usr/bin/bash'? n
pwck: no changes
Comme vous le voyez, une des lignes de mon fichier "/etc/passwd" n'est pas valide, "pwck" me propose alors de la supprimer. Les autres erreurs remontées concernent ici des répertoires "home" qui n'existent pas sur le système et qui sont pourtant déclarés pour les utilisateurs correspondants. Pwck me rapporte également que le binaire déclaré dans le shell de l'utilisateur "vboxaddafake" n'existe pas et que celui-ci n'a pas de correspondance dans le fichier /etc/shadow.
Si vous ne souhaitez pas avoir de demande de modification automatique, il faut utiliser l'option "-r" (pour read-only). Cela permet d'être sûr de ne pas faire d'erreur pouvant impacter le fonctionnement du système et de vérifier avec précision la configuration avant toute modification.
C. Vérifier le fichier /etc/shadow
Le fichier "/etc/shadow" contient les mots de passe des utilisateurs de manière sécurisée. pwck s'assure que chaque entrée dans "/etc/passwd" a une entrée correspondante dans /etc/shadow. Pour vérifier uniquement le fichier "/etc/shadow", utilisez :
sudo pwck shadow
Comme pour le fichier "/etc/passwd", pwck va aussi vérifier que toutes les lignes utilisent le bon format, avec un nombre correct de champs, etc. Voici les informations vérifiées pour ce fichier :
- Chaque entrée passwd a une entrée shadow correspondante, et inversement ;
- Les mots de passe sont présents pour chaque utilisateur ;
- Chaque utilisateur a un nombre correct de champs ;
- Chaque entrée est unique ;
- Les derniers changements de mot de passe ne sont pas dans le futur.
IV. Conclusion
Dans ce tutoriel, nous avons vu comment utiliser la commande pwck pour vérifier et maintenir l'intégrité des fichiers de comptes utilisateurs et de mots de passe sous Linux. En appliquant ces techniques et bonnes pratiques, vous pouvez assurer une gestion sécurisée et fiable de vos utilisateurs. L'automatisation de ces vérifications renforce la sécurité et minimise les risques d'erreurs non détectées.