Imaginons une chose impossible : vous avez modifié le mot de passe de l’utilisateur « pi », et vous l’avez perdu.
Solution : réinitialiser le mot de passe de l’utilisateur « pi », via un PC sous Linux (dans mon cas, Fedora 20).
Stockage du mot de passe sous Linux
Sous Linux, les mots de passe sont stockés dans le fichier « passwd », dans le répertoire « /etc ».
On a une ligne par utilisateur, le mot de passe est le 2e champ.
Ex :
Les champs sont séparés par le caractère « : » ; ici, les mots de passe apparaissent simplement sous la forme de « x ».
Cela signifie qu’ils sont stockés dans un autre fichier, le fichier « shadow », stocké lui aussi dans le répertoire « /etc » :
Ce fichier n’est accessible, même en lecture, qu’à l’utilisateur root ; on se connecte donc en root :
On peut maintenant afficher le contenu du fichier « /etc/shadow » :
Pour les utilisateurs comme « bin », « daemon » etc, le mot de passe est représenté par un astérisque, mais celui des utilisateurs « root » et « antoine » est bien renseigné ici.
Le début, « $6 », indique que le mot de passe est crypté par l’algorithme SHA-512.
On se déconnecte en tant que « root » pour redevenir « antoine » :
Et sous Raspbian ?
On insère la carte micro SD dans l’adaptateur SD, dans le PC, on peut laisser Fedora monter la partition.
Ci-dessous, le résultat de la commande « df » avant et après avoir inséré la carte :
Allons voir :
On entre simplement « cd f24 », puis touche « tab » pour l’auto-complétion, on valide, puis commande « ll » :
On ouvre le fichier /etc/passwd :
On a bien la ligne concernant l’utilisateur « pi ».
Comme sous Fedora, le « x » indique que le mot de passe est stocké dans le fichier shadow, et il faut être « root » pour ouvrir ce fichier :
Comme le montre le résultat de « pwd », quand on se connecte en « root », on arrive dans le répertoire « /root ».
Il faut retourner là où on était en tant que « antoine » :
On ouvre le fichier shadow ; on retrouve l’utilisateur « pi » :
Le 2e champ commence par « $6 », donc, sous Raspbian comme sous Fedora 20, l’algorithme utilisé pour obtenir un hash du mot de passe est le même : ça tombe bien!
Mode opératoire
- extraire la ligne du fichier shadow de Raspbian, pour l’utilisateur « pi »
- obtenir le hash SHA-512 du futur mot de passe de l’utilisateur « pi »
- reconstituer la ligne du fichier shadow avec ce nouveau hash
- remplacer la ligne dans le fichier shadow
étape 1
Extraire la ligne de ce fichier qui concerne l’utilisateur « pi », et la stocker dans une variable.
Tester l’extraction de la ligne :
ok, on stocke cette ligne dans la variable « LIGNE », on vérifie son contenu :
étape 2 : Obtenir le hash SHA-512 du futur mot de passe
Il faut choisir un mot de passe, et utiliser Fedora pour obtenir le hash correspondant.
Prenons le mot « ledcedc3919 » :
Je modifie le mot de passe de l’utilisateur « antoine ».
Pour faire cette opération en tant que root, il faut entrer « passwd antoine » :
On n’a plus qu’à lire le fichier /etc/shadow, pour voir le hash de ce nouveau mot de passe.
On le stocke dans la variable « NOUVEAU » :
étape 3 : reconstituer la nouvelle ligne
La nouvelle variable « LIGNE2 » va stocker, pour le moment, le 1er champ de l’ancienne ligne :
On ajoute le séparateur, soit « : », puis le hash du nouveau mot de passe :
On ajoute le séparateur, puis les champs 3 à 9 de l’ancienne ligne :
étape 4 : éditer le fichier shadow de Raspbian
Ajouter la ligne à la fin du fichier, puis entrer « vi shadow » pour ouvrir le fichier avec l’éditeur « vi » :
Manips dans vi :
- Entrer « : set nu », pour activer la numérotation des lignes
- « 27G » pour se positionner sur la ligne 27 (la nouvelle)
- « yy » pour copier la ligne
- « 20G » pour se positionner sur la ligne 20 (l’ancienne)
- « p » pour coller la nouvelle ligne après l’ancienne ligne
- « k » pour se positionner sur l’ancienne ligne
- « dd » pour la supprimer
à ce stade, on a remplacé l’ancienne ligne par la nouvelle, sur la 20e ligne du fichier, mais on doit encore supprimer l’exemplaire de la nouvelle ligne qui est sur la ligne 27 :
- « 27G » pour se positionner sur la nouvelle ligne
- « :wq » pour enregistrer les modifications et quitter vi
On vérifie le fichier :
Fichier de sauvegarde shadow-
Une recherche montre que le fichier de sauvegarde est nommé « shadow-« :
On modifie ce fichier de la même façon que le fichier shadow.
test grandeur nature
On démonte les deux partitions de la carte SD, on met la carte SD dans le Raspberry Pi, connecté à la TV etc.
On entre « pi » comme identifiant et « ledcedc3919 » comme mot de passe : c’est accepté, on est loggé. Oh yeah!!
Modifier le mot de passe de l’utilisateur root
Je ne l’avais pas encore fait, donc c’est le moment : je modifie le mot de passe du compte « root » du rPi.
C’est la commande « sudo password root ».
Laisser un commentaire