Démarrer en mode secours et en mode d'urgence
Fedora dispose déjà d'un mécanisme intégré (fourni par systemd) pour démarrer en mode secours et en mode d'urgence.
Cependant, ces documents ont leurs limites : par défaut, Fedora (et donc les systèmes Universal Blue) ne définit pas de mot de passe root lors de l'installation. Ainsi, lorsque le mode d'urgence ou le mode secours est atteint, l'utilisateur voit l'erreur :
Cannot open access to console, the root account is locked.
Nous avons amélioré la situation pour tous les dérivés d'Universal Blue (dont Bazzite et Bluefin) en nous inspirant de Fedora CoreOS.
Désormais, lors du démarrage en mode d'urgence ou secours avec un compte root verrouillé, une invite plus classique s'affiche à la place :
Press Enter for maintenance
(or press Control-D to continue):
À ce stade, appuyer sur Enter ouvre le shell root approprié. SELinux est également actif dans ce mode (sauf s'il a été désactivé par une autre configuration), ce qui en fait un mode adapté notamment à la réinitialisation de votre mot de passe.
Vous trouverez plus de détails ci-dessous :
Démarrer en mode d'urgence
Le mode d'urgence fournit l'environnement le plus minimal possible et vous permet de réparer votre système même lorsqu'il est impossible d'accéder au mode secours. En mode d'urgence, le système monte le système de fichiers root en lecture seule, ne tente pas de monter les autres systèmes de fichiers locaux, n'active pas les interfaces réseau et ne démarre que quelques services essentiels.
- Appuyez sur Esc au clavier pour accéder au menu de démarrage GRUB.
a. Si vous appuyez trop de fois sur Esc, vous risquez d'arriver à une invite
grub>. b. Revenez au menu de démarrage en saisissantexit, puis en appuyant sur Enter - Sélectionnez le déploiement souhaité (la première entrée est généralement la bonne) et modifiez-le en appuyant sur E au clavier.
- Descendez avec les flèches jusqu'à la ligne commençant par
linux, puis appuyez sur Ctrl+E pour atteindre la fin de la ligne. - Ajoutez le mot
emergencyà la fin de la ligne. a. Veillez à laisser un espace entreemergencyet le texte existant. b. Vous pouvez ajouter les paramètres équivalents-bousystemd.unit=emergency.targetà la place deemergency. - Appuyez sur Ctrl+X pour démarrer le système.
Démarrer en mode secours
Le mode secours fournit un environnement mono-utilisateur pratique et vous permet de réparer votre système lorsqu'il ne parvient pas à terminer un démarrage normal. En mode secours, le système tente de monter tous les systèmes de fichiers locaux et de démarrer certains services système importants, mais il n'active pas les interfaces réseau et n'autorise pas plusieurs utilisateurs à se connecter simultanément. Dans Fedora, le mode secours équivaut au mode mono-utilisateur.
- Appuyez sur Esc au clavier pour accéder au menu de démarrage GRUB.
a. Si vous appuyez trop de fois sur Esc, vous risquez d'arriver à une invite
grub>. b. Revenez au menu de démarrage en saisissantexit, puis en appuyant sur Enter - Sélectionnez le déploiement souhaité (la première entrée est généralement la bonne) et modifiez-le en appuyant sur E au clavier.
- Descendez avec les flèches jusqu'à la ligne commençant par
linux, puis appuyez sur Ctrl+E pour atteindre la fin de la ligne. - Ajoutez le mot
singleà la fin de la ligne. a. Veillez à laisser un espace entresingleet le texte existant. b. Vous pouvez ajouter les paramètres équivalents1,s,Sousystemd.unit=rescue.targetà la place desingle. - Appuyez sur Ctrl+X pour démarrer le système.
Un shell root sans mot de passe ! Comment est-ce sécurisé ?
Cette amélioration exige que l'utilisateur puisse modifier la ligne de commande du noyau. Si votre chargeur de démarrage (par exemple GRUB) est configuré avec un mot de passe empêchant les utilisateurs de modifier cette ligne de commande, le contournement du mot de passe pour un compte root verrouillé ne sera pas activé. C'est particulièrement important, car le mode emergency peut être atteint lorsqu'une vérification du système de fichiers échoue au démarrage, et pas seulement lorsqu'il est indiqué sur la ligne de commande du noyau.
Grâce à cette protection, cette méthode améliorée de secours et d'urgence est aussi sûre que de définir init=/bin/bash, etc. De plus, l'utilisateur risque moins d'endommager les étiquettes SELinux avec cette méthode.
Merci à Colin Walters et à Timothée Ravier pour avoir inspiré cette solution.