Fichiers des comptes Linux

Fichier /etc/passwd

Nous avons vu lors de l'installation de Linux, qu'un compte utilisateur simple (sans pouvoirs) a été créé. Nous l'avons appelé user (mot de passe user). Ce compte nous a permis de nous connecter puis d'activer le compte root (avec pouvoirs) en utilisant la commande sudo.

La liste des utilisateurs est stockée dans un fichier appelé /etc/passwd (rappel : on donne toujours le chemin absolu lorsque l'on cite un fichier dans le monde Linux).

À faire : afficher le contenu de ce fichier via la commande cat vue au TP2.

Seules la première et la dernière ligne de ce fichier nous intéressent pour l'instant.

  • Première ligne :
root:x:0:0:root:/bin/bash
  • Dernière ligne :
user:x:1000:1000:user,,,:/home/user:/bin/bash

Explications (les différents champs sont séparés par le caractère ':')

  1. Username : Le nom de compte (celui qui doit être saisi pour se connecter).
  2. Password : Un x indique qu'un mot de passe chiffré existe dans le fichier /etc/shadow.
  3. User ID (UID) : Chaque compte possède un numéro unique (0 est obligatoirement celui du compte root). Les numéros entre 1 et 999 sont réservés pour des comptes administratifs qui ne nous concernent pas ici. Les numéros à partir de 1000 concernent les comptes utilisateurs (ceux que nous allons créer).
  4. Group ID (GID) : Numéro du groupe primaire auquel appartient le compte (chaque compte appartient par défaut à un groupe qui possède le même nom que le compte et ce groupe possède également un ID). Les autres membres d'un groupe sont stockés dans le fichier /etc/group.
  5. User ID Info : Informations complémentaires sur un compte (nom complet - souvenez-vous, il était demandé durant l'installation de Linux - numéros de téléphones, etc.)
  6. Home directory : Chemin absolu vers le répertoire de l'utilisateur (celui dans lequel on se retrouve après connexion symbolisé par ~ dans le prompt).
  7. Shell : Chemin absolu vers le shell de l'utilisateur, c'est à dire l'interpréteur des commandes que l'on saisit  (ici /bin/bash, mais sachez qu'il en existe d'autres, le shell bash étant le plus utilisé).

Les mots de passe sont donc stockés dans un fichier à part appelé /etc/shadow

Fichier /etc/shadow

À faire : afficher le contenu de ce fichier toujours via la commande cat.

Encore une fois, seules la première et la dernière ligne de ce fichier nous intéressent.

  • Première ligne :
root:$6$cBNnsDaJ$/ug[...]9f0:17215:0:99999:7:::
  • Dernière ligne :
user:$6$42doiZb3$q6x[...]fV/:17215:0:99999:7:::

Explications (les différents champs sont séparés par le caractère ':')

  1. Username : Le nom du compte.
  2. Password : * indique un compte désactivé, sinon on trouve l'empreinte du mot de passe.
  3. Lastchanged : Nombre de jours entre le 1/1/1970 et le dernier changement du mot de passe.
  4. Minimum : Nombre de jours avant que le mot de passe puisse être changé (0 par défaut).
  5. Maximum : Nombre de jours au delà duquel le mot de passe doit être changé (99999 par défaut).
  6. Warm : Nombre de jours restant avant que l'utilisateur soit averti de l'expiration de son mot de passe.
  7. 8 et 9 : usage rare, on ne s'en préoccupe pas ici.

Remarques sur le chiffrement des mots de passe.

Le champ comprend plusieurs parties séparées par le caractère '$' :

  • $6 indique une empreinte de type SHA-512 (cas le plus courant).
  • $cBNnsDaJ est le sel (ou 'salt', chaîne utilisée pour rendre plus difficile la découverte d'un mot de passe).
  • $/ug...9f0 est l'empreinte du mot de passe + le sel.

Fichier /etc/group

Ce fichier contient la liste des groupes et de ses membres.

Contenu de la première ligne :

root:x:0:

Sa structure est la suivante :

  1. GroupName : Nom du groupe.
  2. Password : x indique que le mot de passe est stocké dans le fichier /etc/gshadow.
  3. GroupID (GID) : ID du group.
  4. GroupList : Liste des noms des utilisateurs autre que l'utilisateur portant le même nom que le groupe appartenant à ce groupe (ici aucun).

Fichier /etc/gshadow

Ce fichier contient la liste des mots de passe des groupes.

Contenu de la première ligne :

root:*::

Contenu de la ligne concernant le groupe user

user:!::

Sa structure est la suivante :

  1. GroupName : Nom du groupe.
  2. Password : * ou ! signifient qu'il n'y a pas de mot de passe. C'est à dire que personne en dehors des membre du groupe ne peuvent accéder aux ressources d'un groupe auquel il n'appartient pas (sinon il peut utiliser le mot de passe).
  3. AdminList : Liste des administrateurs du groupe (séparés par une virgule).
  4. MembersList :  Liste des utilisateurs appartenant à ce groupe (séparés par une virgule).

Exercices :

  1. Quelle commande permet d'afficher uniquement la première ligne du fichier /etc/passwd (commande déjà vue) ?
  2. Quelle commande permet d'afficher uniquement la dernière ligne du fichier /etc/shadow (commande déjà vue) ?
  3. Quelle commande permet d'afficher uniquement les lignes contenant un mot donné dans un fichier (commande non vue, faire une recherche) ?
    Donner la commande à saisir pour afficher les lignes du fichier /etc/passwd contenant le mot bash.
    Donner la commande à saisir pour afficher les lignes du fichier /etc/group contenant le mot user.
  4. L'objectif de cet exercice est de générer l'empreinte d'un mot de passe comme il sera stocké dans le fichier /etc/shadow.
    Pour cela, il faut installer le paquetage whois.
    a) Quelle commande pour installer ce paquetage ?
    La commande à utiliser s'appelle mkpasswd. Sa syntaxe est la suivante :
    mkpasswd -m SHA-512 unMotDePasse valeurDuSel (si l'empreinte est de type 6 - voir plus haut -)
    b) Quelle commande saisir pour vérifier les mots de passe de root et de user ? Vérifier que vous obtenez le même résultat que celui stocké dans le fichier /etc/shadow.
    Selon vous, pourquoi utilise-t-on le sel ? (indication : pensez à deux utilisateurs qui ont le même mot de passe).