Passwd, shadow et skel
Découvrons ensemble où sont stockés les informations des comptes utilisateurs.
Au sommaire :
- 1-passwd
- 2-shadow
- 3-skel
1-passwd
Les informations des comptes sont stockés à deux endroits :
- /etc/passwd
- /etc/shadow
Le fichier passwd stocke les informations essentielles de l'ensemble des comptes du système.
Il est accessible à tous donc n'importe quel compte peut afficher le contenu de ce fichier, ce qui veut dire aussi qu'il n'y a rien de confidentiel.
Si vous faites un "cat /etc/passwd", vous aller pouvoir afficher tout les comptes disponibles dans le système et vous allez être assez assez surpris du nombre (49 au total sur mon PC portable Ubuntu).
La raison est que de nombreux processus du système ont un compte dédié pour effectuer leur tâches comme SSH (protocole de connexion), Samba (partage de fichiers), Cups (imprimante), Pulse (audio), etc.
Chaque ligne représente un compte et si vous avez lu la partie 1 du guide, vous savez que la création de comptes s'effectue via deux commandes :
- useradd
- adduser
Voici comment se présente chaque ligne de ce fichier.
- 1-Le nom de l'utilisateur (jusqu'à 32 caractères maximum).
- 2-Le mot de passe qui est représenté par un "x" (vous comprendrez mieux dans la partie sur shadow) et qui peut-être modifié avec la commande "passwd".
- 3-Le UID (Unique Identifier ou identifiant utilisateur). Le compte root est défini par 0, les comptes prédéfinis de 1 à 99 et pour les comptes standards de 99 à 999.
- 4-Le GID (Group Identifier ou identifiant groupe) dont vous retrouverez la liste dans le fichier "/etc/group".
- 5-Informations sur le compte (téléphone, nom complet), la partie qu'on a la flemme de renseigner en général avec useradd/adduser.
- 6-Le dossier de l'utilisateur.
- 7-Le shell que le compte utilise (/bin/bash pour un utilisateur, /usr/bin/nologin pour les comptes liés aux processus).
Chaque fois que vous allez créer un utilisateur avec la commande passwd, Linux attribuera le prochain UID disponible et donnera le même en GID.
Si vous voulez trouver votre UID/GID, tapez simplement id sur votre terminal.
id
Si vous souhaitez connaitre celui d'un compte compte, ajoutez le nom de ce dernier après la commande "id".
id root
Note : sachez que si vous administrez plusieurs serveurs Linux, les UID sont uniques à chaque serveur, il n'y a pas de synchronisation entre eux.
2-shadow
Seul le compte root peut afficher le contenu du fichier shadow.
Vous aurez besoin des accès root pour afficher le fichier.
Le mot de passe est hashé.
Le compte root à un point d'exclamation qui indique qu'il a pas de mot de passe et qu'il est verrouillé. Logique vu que sur Ubuntu, contrairement à Debian, le compte root es désactivé par défaut et il est conseillé de le laissé ainsi.
La commande passwd -l permet de verrouiller un compter sans éditer le fichier.
Dans la troisième colonne, vous pouvez lire le chiffre "19396" qui correspond au nombre de jours écoulés depuis le 01/01/1970 (héritage du système Unix).
Si vous voulez voir à quelle date le mot de passe à changer, tapez la commande suivante.
sudo passwd -S <username>
- La première colonne indique le nom du compte.
- La deuxième colonne : L signifie verrouillé, P signifie que que le mot de passe est utilisable, NP qu'il n'y a aucun mot de passe.
- La troisième colonne indique la date où le mot de passe à été changé.
- La quatrième colonne indique le nombre de jour qui doivent s'écouler avant que l'utilisateur puisse à nouveau changer son mot de passe (0 par défaut).
- La cinquième colonne indique le nombre de jours qui s'écoule entre deux changement de mot de passe (99999 jours par défaut).
- La sixième colonne indique le nombre de jour après expiration (7 par défaut) où l'utilisateur est incité à changer son mot de passe
- La septième colonne indique combien de jours se sont écoulés depuis l'expiration
- La huitième colonne (non visible), le nombre de jours qui correspond au nombre de jours écoulés depuis le 01/01/1970 (héritage du système Unix).
Avec la commande chage, vous pouvez visualiser ces informations de manière plus claire.
chage -l <username>
Mais aussi modifier le fonctionnement des comptes.
Si vous voulez que l'utilisateur change son mot de passe à la première connexion.
sudo chage -d 0 <username>
Pour forcer l'utilisateur à changer son mot de passe après un délai de 90 jours.
sudo chage -M 90 <username>
Réduire le nombre de jour après expiration de 7 à 5 pour forcer l'utilisateur à changer le mot de passe.
sudo chage -m 5 dscully
Pour en savoir plus, lisez le manuel en tapant dans le terminal :
man passwd
man shadow
3-skel
Les fichiers qui se trouvent dans le dossier skel (pour skeleton ou squelette) sont automatiquement distribués sur l'ensemble des dossiers utilisateurs (/home/<username>). Idéal si vous souhaitez que tout les utilisateurs disposent d'une configuration par défaut personalisé par vos soins.
Cela peux vous donner des idées de personnalisation comme afficher un message de bienvenue, changer le shell, etc.
Sources: