Mot de passe root oublié sous CentOS ?

Mot de passe rootDans la vie quotidienne de l’administrateur Linux, l’oubli du mot de passe root peut faire partie des choses f’âcheuses qui arrivent. Peut-être pas tous les jours, mais c’est déjà arrivé à un de mes clients. L’administrateur qui gérait le serveur de fichiers Linux de la boutique avait disparu dans la nature du jour au lendemain, et personne n’avait le mot de passe pour accéder à la machine. C’est donc une bonne chose de savoir se dépatouiller dans ce genre de situation. La définition d’un nouveau mot de passe pour root avec la méthode décrite ici nécessite un accès physique à la machine.

Au démarrage, appuyer sur la touche [E] à l’invite de GRUB pour éditer les options de démarrage. Sur un serveur CentOS 7, la ligne par défaut ressemble à quelque chose comme ceci.

CentOS Linux (3.10.0-862-3.2.el7.x86_64) 7 (Core)

Une fois qu’on a appuyé sur [E], on descend à la ligne qui concerne le kernel. C’est quelque chose comme ceci.

linux16 /vmlinuz-3.10.0-862.3.2.el7.x86_64 \
root=UUID=e96eab90-63fe-4122-a35f-5ec9d99dc847 \
ro rhgb quiet

On va ajouter l’option de démarrage init=/bin/bash à cette ligne. On notera que l’interface d’édition de GRUB utilise un clavier QWERTY américain.

linux16 /vmlinuz-3.10.0-862.3.2.el7.x86_64 \
root=UUID=e96eab90-63fe-4122-a35f-5ec9d99dc847 \
ro rhgb quiet init=/bin/bash

La bidouille consiste ici à initialiser le système en lançant uniquement un shell Bash. La combinaison de touches [Ctrl]+[X] lance le démarrage, et on se retrouve face à une invite de commandes.

[bash-4.2#

Pour l’instant, la partition principale n’est montée qu’en lecture seule, il faut donc la remonter en lecture/écriture.

# mount -o remount,rw /

À présent, nous pouvons définir un mot de passe pour root à notre guise.

# passwd
Changing password for user root.
New password: ********
Retype new password: ********
passwd: all authentication tokens updated successfully.

Si le système utilise SELinux en mode renforcé, nous devons impérativement réétiqueter le système au prochain démarrage, faute de quoi nous ne pourrons pas nous connecter.

# touch /.autorelabel

Étant donné que nous avons “initialisé” notre système avec le seul shell Bash, les commandes de contrôle comme halt -p ou shutdown -h now ne fonctionnent pas. Pour arrêter le système proprement, il suffit de remonter la partition principale en lecture seule.

# mount -o remount,ro /

Ensuite, on peut éteindre le système en appuyant sur le bouton Reset.

Au prochain démarrage, le réétiquetage des fichiers met un certain temps. Au terme de l’opération, on peut se connecter en tant que root avec le nouveau mot de passe.

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

4 réponses à Mot de passe root oublié sous CentOS ?

    • kikinovak dit :

      Certes. L’avantage de la méthode présentée ici, c’est qu’elle est utilisable sur la majorité des distributions dans la configuration par défaut. Elle n’est pas spécifique à RHEL/Fedora/CentOS, sauf la partie concernant SELinux.

  1. Denis dit :

    C’est pas faux. Mais ton article parlait de CentOS, non ? ;+)

    En tout cas, les deux méthodes méritent d’être connus et merci pour ton billet qui aura éveillé ma curiosité !

    • kikinovak dit :

      C’est le genre de truc qu’on développe en formation, puisqu’il y a toujours un stagiaire dans le lot qui a mal défini son mot de passe. Du coup j’ai eu l’occasion d’utiliser cette technique sous Debian et Slackware, et maintenant CentOS.

      Plusieurs chemins mènent à Saint-Bauzille-de-Putois, comme dit un proverbe un peu moins bien connu.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.