Passwd, shadow et skel

Découvrons ensemble où sont stockés les informations des comptes utilisateurs.

Passwd, shadow et skel
sysadmin linux administration passwd shadow skel

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).
Source : https://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/

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
StackPath

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
Comprendre le fichier /etc/shadow de Linux
C’est quoi le fichier /etc/shadow de Linux ? A quoi correspondent les différentes valeurs ? Comment modifier le fichier /etc/shadow ? Explications.
/etc/shadow : un fichier indispensable sous Linux
Le fichier /etc/shadow est présent sur les machines Linux, mais à quoi sert-il ? que signifie les différentes lignes de ce fichier ? Réponse dans ce tutoriel.
Ubuntu Manpage: shadow - fichier des mots de passe cachés

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.

Le répertoire /etc/skel/ sous Linux : à quoi sert-il ?
Utilisez le répertoire /etc/skel/ sous Linux pour définir un profil par défaut, c’est-à-dire un modèle de répertoire home à appliquer aux nouveaux utilisateurs.
/etc/skel

Sources:

Mastering Ubuntu Server - Fourth Edition | Packt
Your one-stop resource to learn, configure and use Ubuntu 22.04 for your day-to-day operations and deployments. Purchase of the print or Kindle book includes a free eBook in PDF format.