Aller au contenu principal

Réinitialiser le mot de passe root sous Linux

Cette page décrit plusieurs méthodes pour réinitialiser le mot de passe root d’un système Linux lorsque l’accès administrateur est perdu :

  • via GRUB en démarrant un shell minimal ;
  • via le mode recovery lorsque la distribution le propose ;
  • via SystemRescue, en montant la partition système puis en utilisant chroot et passwd.
Usage autorisé uniquement

Ces procédures donnent un accès administrateur complet à la machine. Elles doivent être utilisées uniquement sur des systèmes dont vous êtes propriétaire, administrateur ou pour lesquels vous avez une autorisation explicite.

Principe général

Le mot de passe root n’est pas “retrouvé”. Il est remplacé. La commande utilisée est passwd, qui modifie le mot de passe d’un compte local. Le superutilisateur peut modifier le mot de passe d’un autre compte sans connaître l’ancien mot de passe.

Exemple de menu GNU GRUB
Exemple de menu GRUB permettant d’éditer temporairement les paramètres de démarrage.

Pré-requis

Avant de commencer, préparez les éléments suivants :

ÉlémentDétail
Accès physique ou console distanteClavier/écran, KVM/IPMI/iDRAC/iLO, console VPS, hyperviseur, etc.
Fenêtre de maintenanceUn redémarrage est nécessaire.
Sauvegarde récenteRecommandée avant toute intervention sur des partitions.
Connaissance du chiffrementSi le disque est chiffré LUKS, la phrase de passe du volume sera nécessaire.
Support SystemRescueClé USB ou ISO montée sur la VM, si la méthode GRUB ne suffit pas.

Identifier le contexte de la machine

Avant de choisir la méthode, vérifiez autant que possible :

  • distribution : Debian, Ubuntu, Rocky, AlmaLinux, RHEL, Fedora, Arch, etc. ;
  • type de disque : partition simple, LVM, Btrfs, RAID logiciel ;
  • chiffrement : LUKS ou non ;
  • activation de SELinux : fréquent sur RHEL, Rocky, AlmaLinux, Fedora ;
  • compte ciblé : root ou un utilisateur sudo.
Ubuntu et compte root

Sur Ubuntu, le compte root peut être verrouillé par défaut. Dans ce cas, il est souvent plus pertinent de réinitialiser le mot de passe d’un utilisateur membre du groupe sudo, par exemple :

passwd nom_utilisateur

Méthode 1 — Réinitialisation via GRUB avec init=/bin/bash

Cette méthode démarre le système directement dans un shell root minimal, sans lancer complètement le système d’exploitation.

Étape 1 — Afficher le menu GRUB

Redémarrez la machine.

Selon le système :

  • maintenez Shift sur BIOS/Legacy ;
  • appuyez plusieurs fois sur Esc sur UEFI ;
  • sur une VM ou un serveur, ouvrez la console distante avant le redémarrage.

Dans le menu GRUB :

  1. sélectionnez l’entrée Linux habituelle ;
  2. appuyez sur e pour éditer l’entrée ;
  3. repérez la ligne qui commence par linux, linux16 ou linuxefi.

Étape 2 — Modifier temporairement la ligne du noyau

À la fin de la ligne du noyau, ajoutez :

rw init=/bin/bash

Si la ligne contient déjà ro, remplacez ro par rw.

Exemple :

linux /boot/vmlinuz-... root=UUID=... rw init=/bin/bash

Démarrez ensuite avec :

  • Ctrl + X ;
  • ou F10, selon la version de GRUB.

Étape 3 — Remonter la racine en lecture-écriture

Une fois le shell obtenu, vérifiez que / est bien monté en écriture :

mount | grep " on / "

Si la racine est en lecture seule, remontez-la :

mount -o remount,rw /

Étape 4 — Réinitialiser le mot de passe root

Changez le mot de passe :

passwd root

Saisissez puis confirmez le nouveau mot de passe.

Pour changer le mot de passe d’un autre utilisateur :

passwd nom_utilisateur

Étape 5 — Cas SELinux

Sur les distributions avec SELinux, créez un fichier de relabel afin que les contextes soient vérifiés au prochain démarrage :

touch /.autorelabel

Le prochain démarrage peut être plus long.

Étape 6 — Redémarrer proprement

Comme le système n’a pas démarré normalement, les commandes classiques peuvent ne pas fonctionner.

Essayez d’abord :

sync
exec /sbin/init

Si cela ne redémarre pas correctement :

sync
reboot -f
attention

Après le redémarrage, testez la connexion localement ou via SSH. Si l’accès SSH root est désactivé, connectez-vous avec un utilisateur sudo.


Méthode 2 — Via le mode recovery GRUB

Certaines distributions, notamment Debian/Ubuntu et dérivées, proposent une entrée de récupération.

Étapes

  1. Redémarrez la machine.
  2. Ouvrez GRUB.
  3. Sélectionnez Advanced options.
  4. Choisissez une entrée contenant recovery mode.
  5. Sélectionnez l’option root ou Drop to root shell prompt.

Si le système vous donne un shell root mais que / est en lecture seule :

mount -o remount,rw /

Réinitialisez ensuite le mot de passe :

passwd root

Ou pour un utilisateur sudo :

passwd nom_utilisateur

Puis redémarrez :

sync
reboot

Méthode 3 — Via GRUB avec rd.break sur RHEL, Rocky, AlmaLinux, Fedora

Sur les distributions de la famille Red Hat, la méthode recommandée utilise souvent rd.break.

Étape 1 — Modifier l’entrée GRUB

Dans GRUB :

  1. sélectionnez le noyau ;
  2. appuyez sur e ;
  3. trouvez la ligne linux, linux16 ou linuxefi ;
  4. ajoutez à la fin :
rd.break

Démarrez avec Ctrl + X.

Étape 2 — Remonter /sysroot

Dans le shell d’urgence :

mount -o remount,rw /sysroot
chroot /sysroot

Étape 3 — Changer le mot de passe

passwd root

Étape 4 — SELinux

Créez le fichier de relabel :

touch /.autorelabel

Quittez le chroot et redémarrez :

exit
reboot

Méthode 4 — Réinitialisation avec SystemRescue

SystemRescue est un environnement Linux bootable destiné aux tâches d’administration, de réparation et de récupération système. Il inclut de nombreux outils utiles : shell, outils de systèmes de fichiers, LVM, GParted, éditeurs, réseau, etc.

Menu de démarrage SystemRescue
Menu de démarrage SystemRescue.
Console SystemRescue après démarrage
Console SystemRescue après démarrage.

Étape 1 — Démarrer sur SystemRescue

Démarrez la machine sur :

  • une clé USB SystemRescue ;
  • une ISO montée dans l’hyperviseur ;
  • un média virtuel via IPMI/iDRAC/iLO.

Choisissez l’entrée par défaut.

Une fois démarré, vous arrivez généralement dans un shell root.

Étape 2 — Choisir le clavier

Pour un clavier français :

setkmap fr

Étape 3 — Identifier les disques et partitions

Listez les périphériques :

lsblk -f

Vous pouvez aussi utiliser :

blkid
fdisk -l

Repérez la partition racine Linux. Elle peut être :

  • /dev/sda2 ;
  • /dev/nvme0n1p2 ;
  • un volume logique comme /dev/mapper/vg0-root ;
  • un sous-volume Btrfs.

Étape 4 — Cas d’un disque chiffré LUKS

Si la partition est chiffrée :

cryptsetup luksOpen /dev/nvme0n1p3 cryptroot

Le volume déchiffré apparaîtra généralement dans :

/dev/mapper/cryptroot

Étape 5 — Cas LVM

Si le système utilise LVM, activez les volumes :

vgscan
vgchange -ay
lvs

Repérez le volume logique contenant /.

Exemple :

/dev/mapper/vg0-root

Étape 6 — Monter la partition racine

Créez un point de montage :

mkdir -p /mnt/sysroot

Montez la racine.

mount /dev/sda2 /mnt/sysroot

Étape 7 — Cas Btrfs avec sous-volume

Si la racine est un sous-volume Btrfs, le montage direct peut ne pas afficher le système attendu.

Inspectez les sous-volumes :

mount /dev/nvme0n1p2 /mnt/sysroot
btrfs subvolume list /mnt/sysroot
umount /mnt/sysroot

Montez ensuite le sous-volume racine, souvent @ :

mount -o subvol=@ /dev/nvme0n1p2 /mnt/sysroot

Étape 8 — Monter les pseudo-systèmes nécessaires au chroot

Montez les répertoires nécessaires :

mount --bind /dev  /mnt/sysroot/dev
mount --bind /proc /mnt/sysroot/proc
mount --bind /sys /mnt/sysroot/sys
mount --bind /run /mnt/sysroot/run

Si /boot est une partition séparée :

mount /dev/sda1 /mnt/sysroot/boot

Si l’EFI est séparé :

mount /dev/sda1 /mnt/sysroot/boot/efi

Adaptez le périphérique selon lsblk -f.

Étape 9 — Entrer dans le système installé avec chroot

chroot /mnt/sysroot /bin/bash

Vous êtes maintenant dans l’environnement du système installé.

Étape 10 — Réinitialiser le mot de passe

Pour root :

passwd root

Pour un utilisateur sudo :

passwd nom_utilisateur

Vérifiez éventuellement l’état du compte :

passwd -S root

Déverrouillez le compte si nécessaire :

passwd -u root
Attention à passwd -u

Ne déverrouillez pas un compte sans mot de passe valide. Définissez toujours un mot de passe robuste immédiatement après.

Étape 11 — Nettoyer les verrouillages ou échecs d’authentification

Sur certaines distributions, un compte peut être temporairement verrouillé après trop d’échecs.

Avec faillock :

faillock --user root --reset

Ou pour un autre utilisateur :

faillock --user nom_utilisateur --reset

Cette commande peut ne pas exister sur toutes les distributions.

Étape 12 — SELinux

Sur RHEL, Rocky, AlmaLinux ou Fedora :

touch /.autorelabel

Étape 13 — Quitter, démonter et redémarrer

Quittez le chroot :

exit

Démontez proprement :

umount -R /mnt/sysroot
sync
reboot

Si un volume LUKS a été ouvert :

cryptsetup luksClose cryptroot

Vérifications après redémarrage

Après le redémarrage :

whoami
id

Vérifiez l’accès root :

su -

Ou l’accès sudo :

sudo -v
sudo whoami

Vérifiez les journaux d’authentification :

journalctl -b -p warning
grep -i "authentication" /var/log/auth.log

Dépannage

passwd: Authentication token manipulation error

Causes fréquentes :

  • système monté en lecture seule ;
  • /etc/shadow inaccessible ;
  • chroot incomplet ;
  • pseudo-systèmes /dev, /proc, /sys, /run non montés.

Correctifs :

mount -o remount,rw /

Ou, depuis SystemRescue :

mount --bind /dev  /mnt/sysroot/dev
mount --bind /proc /mnt/sysroot/proc
mount --bind /sys /mnt/sysroot/sys
mount --bind /run /mnt/sysroot/run
chroot /mnt/sysroot /bin/bash
passwd root

Le système ne démarre plus après modification GRUB

Les modifications faites avec e dans GRUB sont temporaires. Redémarrez et relancez avec l’entrée normale.

Si le démarrage échoue toujours, utilisez SystemRescue pour vérifier :

lsblk -f
fsck -f /dev/sdXN
danger

N’exécutez pas fsck sur une partition montée.

Partition racine introuvable

Utilisez :

lsblk -f
blkid
fdisk -l

Cherchez les systèmes de fichiers Linux (ext4, xfs, btrfs) et les labels éventuels.

Volume LVM invisible

Activez LVM :

vgscan
vgchange -ay
lvs

Disque chiffré

Ouvrez d’abord LUKS :

cryptsetup luksOpen /dev/sdXN cryptroot

Puis inspectez :

lsblk -f

Root ne peut pas se connecter en SSH

Même avec un nouveau mot de passe, SSH peut refuser root si la configuration l’interdit.

Vérifiez :

grep -E "^PermitRootLogin|^PasswordAuthentication" /etc/ssh/sshd_config

Selon la politique de sécurité, privilégiez un utilisateur sudo plutôt que l’activation de SSH root.


Sécurisation recommandée après récupération

Après avoir récupéré l’accès :

  1. utilisez un mot de passe long, unique et stocké dans un gestionnaire de mots de passe ;
  2. vérifiez les comptes administrateurs :
getent group sudo
getent group wheel
  1. vérifiez les clés SSH autorisées :
find /root /home -name authorized_keys -type f -print
  1. vérifiez les dernières connexions :
last -a
lastlog
  1. mettez à jour le système :
apt update
apt upgrade
  1. protégez le démarrage si nécessaire :
    • mot de passe GRUB ;
    • chiffrement disque LUKS ;
    • contrôle d’accès à la console serveur ;
    • désactivation du boot externe non autorisé dans l’UEFI/BIOS.
important

Sans chiffrement disque, une personne ayant un accès physique ou console au serveur peut généralement modifier le système en démarrant sur un média externe ou en éditant GRUB.


Résumé rapide

SituationMéthode conseillée
Accès au menu GRUBrw init=/bin/bash
Distribution Red Hat-likerd.break, puis chroot /sysroot
GRUB indisponible ou système complexeSystemRescue
Disque chiffréSystemRescue + cryptsetup luksOpen
LVMSystemRescue + vgchange -ay
BtrfsMonter le bon sous-volume
SELinux actiftouch /.autorelabel

Sources et références