Auteur : Didier Misson
• 15 janvier 2008

Il peut arriver que vous oubliez le mot de passe root (enfin, on ne devrait pas…)
ou comme le cas présent, j’ai repris à la maison un serveur existant et le mot de passe root qu’on m’a communiqué ne fonctionne pas :-(

Comment réinitialiser le mot de passe root ?… sans en arriver à tout réinstaller évidemment ;-)

Le serveur sur le quel je travaille, est en SuSE 10,
mais la manipulation doit fonctionner sur la plupart des distributions.

Attention : il faut avoir physiquement accès à la machine !
Si vous perdez le mot de passe d’un serveur hébergé chez OVH ou Free, Kimsufi, Dedibox ou autre… ce billet ne vous aidera pas.

La première chose est de redémarrer le serveur en mode single user, càd un mode où il ne vous demandera pas de mot de passe.

Je suppose que Grub est installé sur ce PC, ce qui est le cas avec la SuSE 10 et avec Ubuntu.

Grub me propose au démarrage plusieurs options :

  • SuSE Linux 10.0
  • Floppy
  • Failsafe — SUSE LINUX 10.0

“Floppy” serait une possibilité, si vous avez créé une disquette de démarrage…

Comme je n’en ai pas, je vais booter en mode Single User avec Grub.

C’est pour cette raison que vous devez avoir accès à la machine : impossible en effet de modifier le menu Grub sans le mot de passe root à distance, et de sélectionner une option de boot dans le menu Grub sans être à côté de la machine !

Une autre solution serait de booter la machine sur un Live CD : Ubuntu par exemple, mais vérifier s’il y a assez de mémoire RAM. Il faut 256 MB et je n’ai ici que 128 MB…

Plutôt que de chercher un Live CD plus petit, je vais essayer avec Grub, ce qui sera finalement plus rapide que de devoir trouver ou graver un Live CD. ;-)

Au démarrage, quand le menu Grub apparaît, sélectionner l’option “Failsafe — SUSE Linux 10.0″

Ne faites pas ENTER !

En effet, en tout cas avec la SuSE 10, Failsafe ne boot pas en mode Single user !

Donc, vous êtes descendu sur la ligne “Failsafe” avec les flèches.

Taper “e” pour “éditer la commande avant de booter”.

Les commandes pour que Grub boot devrait ressembler à ceci :

root (hd0,0) kernel /boot/vmlinuz root=/dev/hda1 showopts ied=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off 3 initrd /boot/initrd

Sélectionner avec les flèches la ligne commençant par “kernel” et éditer là en tapant “e”. Ajouter ” single” à la fin (avec un espacement avant).
Attention, votre clavier est en Qwerty. La ligne doit ressembler à ceci :

kernel /boot/vmlinuz root=/dev/hda1 showopts ied=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off 3 single

Ne vous inquiétez pas si les options sur la ligne Kernel de votre système sont différentes des miennes : elles peuvent changer d’un système à l’autre. La seule chose importante est d’ajouter ” single” à la fin.

Taper Enter pour valider la ligne modifiée.
Démarrer en Linux en mode Single user en pressant la touche “b” pour boot.

Le boot se termine par les lignes

Master Resource Control: runlevel S has been reached Give root password for login:

Je ne connais pas ce mot de passe…
Je tape simplement Enter… et je suis logon en Root ;-)

Attention : le clavier est toujours en Qwerty !

Si votre partition est montée en “read only”, vous pouvez normalement la remonter en read/write avec la commande :

mount -w -n -o remount /

Ensuite, plusieurs méthodes peuvent être utilisées :

Vous pouvez éditer le fichier /etc/shadow pour supprimer la signature MD5 du mot de passe de root.

Cette méthode a l’avantage de pouvoir être utilisée quand vous avec booté depuis un Live CD (après avoir monté la partition)

cp /etc/shadow /etc/shadow_bak vi /etc/shadow

Le fichier shadow ressemble à ceci :

root:$1$wGXJfAhj$SZ6NmA6V8ljOPv6fU.JPp1:12987:0:99999:7::: daemon:*:12987:0:99999:7::: bin:*:12987:0:99999:7::: sys:*:12987:0:99999:7::: sync:*:12987:0:99999:7::: ...

Le mot de passe n’est pas en clair. Seul le hachange MD5 est écrit.
Cela ne permet pas de mettre un nouveau mot de passe, mais on peut simplement supprimer le mot de passe !

Pour cela, supprimer le MD5. La ligne doit ressembler à ceci :

root::12987:0:99999:7::: daemon:*:12987:0:99999:7::: bin:*:12987:0:99999:7::: ...

Sauvez le fichier shadow (ESC :wq en VI) et rebooter le PC

# reboot


Et bien, cela n’a pas fonctionné pour “root” avec cette SuSE 10.

Il continue à me demander un mot de passe pour le logon avec root, et n’accepte pas un mot de passe vide.

J’ai pourtant essayé cette méthode de suppression du hachage MD5 sur un PC Ubuntu (mais sur un user normal, puisqu’en Ubuntu, le userid “root” n’est pas utilisé).

Je vais tricher.
Je refais la manipulation précédente, mais au lieu d’effacer le MD5 du mot de passe root, je le remplace par un AUTRE MD5 (venant du même PC ou d’un autre PC Linux) d’un AUTRE userid dont je connais bien évidemment le mot de passe ;-)

Je sauve et reboot, et cette fois cela fonctionne !

Le PC accepte maintenant le logon de “root” avec le mot de passe de cet autre utilisateur dont j’ai copié le MD5 :-)
Il me reste à rechanger le mot de passe de “root” et de mettre celui que je désire.

Méthode : plus simple :-)

Comme dans la méthode précédente, dans le menu Grub, éditer la ligne “kernel” du “Failsafe” en ajoutant ” single” à la fin.

Vous arrivez donc à faire logon en root sans mot de passe ;-)

La méthode est ici ultra simple :

Puisque l’on est logon en root… il suffit d’utiliser la commande passwd pour remettre un mot de passe à l”utilisateur “root” !

(none):~ # passwd Changing password for root. New Password : Reenter New Password : Password changed.

Et OUI !
C’est AUSSI SIMPLE QUE CA !
;-)

Juste un piège ! N’oubliez pas que le clavier est toujours en QWERTY !
Certaines lettres changent de place, et il ne faut pas utiliser la touche majuscule pour les chiffres.

Si vous voulez être sûr d’introduire un mot de passe que vous arriverez à retaper, utiliser par exemple uniquement quelques touches dont la position ne change pas entre Qwerty et Azerty.

Rebooter le PC.
et voilà ! Le mot de passe a bien été modifié ! :-)

Si vous n’avez pas pu introduire le mot de passe que vous désiriez car c’était trop acrobatique en Qwerty (les lettres accentuées par exemple…), faite logon avec “root” et remodifiez le avec la commande “passwd”, cette fois avec le clavier bien configuré en Azerty. :-)

Catégorie: Linux | Tags : ,
Vous pouvez suivre toutes les réponses à à ce billet via le flux RSS 2.0. Vous pouvez laisser une réponse, ou un rétrolien depuis votre propre site.

Une réponse

  1. Voilà Dominique, le mot de passe root a été réinitialisé.
    Le serveur tourne…
    Mais je ne le connecterai que demain, suis crevé ce soir ;-)

Laisser un commentaire