Comptes et droits Linux
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 ':')
- Username : Le nom de compte (celui qui doit être saisi pour se connecter).
- Password : Un x indique qu'un mot de passe chiffré existe dans le fichier /etc/shadow.
- 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).
- 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.
- 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.)
- 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).
- 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 ':')
- Username : Le nom du compte.
- Password : * indique un compte désactivé, sinon on trouve l'empreinte du mot de passe.
- Lastchanged : Nombre de jours entre le 1/1/1970 et le dernier changement du mot de passe.
- Minimum : Nombre de jours avant que le mot de passe puisse être changé (0 par défaut).
- Maximum : Nombre de jours au delà duquel le mot de passe doit être changé (99999 par défaut).
- Warm : Nombre de jours restant avant que l'utilisateur soit averti de l'expiration de son mot de passe.
- 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 :
- GroupName : Nom du groupe.
- Password : x indique que le mot de passe est stocké dans le fichier /etc/gshadow.
- GroupID (GID) : ID du group.
- 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 :
- GroupName : Nom du groupe.
- 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).
- AdminList : Liste des administrateurs du groupe (séparés par une virgule).
- MembersList : Liste des utilisateurs appartenant à ce groupe (séparés par une virgule).
Exercices :
- Quelle commande permet d'afficher uniquement la première ligne du fichier /etc/passwd (commande déjà vue) ?
- Quelle commande permet d'afficher uniquement la dernière ligne du fichier /etc/shadow (commande déjà vue) ?
- 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. - 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).