Que se passerait-il si je supprimais le répertoire /
alors que j'étais connecté en tant que root dans Ubuntu?
Aurais-je une sorte d'erreur à l'effet de Error: unable to self-destruct
? Ou pourrais-je réellement supprimer le répertoire?
J'ai déjà essayé cela sur une clé USB pour répondre ne question sur Quora il y a quelque temps (il y a une autre excellente réponse d'Eric Bowersox).
Première tentative sur un système installé où j'étais confiant, rien ne se passerait:
# cd /
# rm -rf /
rm: it is dangerous to operate recursively on `/'
rm: use --no-preserve-root to override this failsafe
# rm -rf .
rm: cannot remove directory: `.'
#
Alors, je l'ai essayé sur une clé USB live (citant mon article d'origine):
Eric Bowersox m'a inspiré pour l'essayer sur une clé USB live (sans persistance). Comme il l'a dit, un grand nombre d'erreurs concernant les fichiers en cours d'utilisation, ainsi qu'un autre ensemble d'erreurs concernant le système de fichiers en lecture seule utilisé ont abouti à la disparition progressive de parties de l'interface graphique: les icônes du lanceur Unity, puis l'icône de la palette, puis les icônes de la barre d'état système. Lorsque tout s'est terminé (remarquablement rapidement), seul le terminal pouvait se concentrer, un clic n'importe où n’a pas fonctionné. Je pourrais ouvrir n'importe quoi d'autre, même pas les préférences du terminal. Les menus de la localisation et les applets d'horloge s'ouvraient mais ne fonctionnaient pas.
Passer aux autres écrans fonctionnait une fois (je n'ai pas essayé d'essayer de commandes), mais une fois que je suis revenu à l'interface graphique, rien ne fonctionnait.
Voici à quoi cela ressemblait alors:
Rien n'a fonctionné à ce stade. À l'exception du bouton d'alimentation et des touches Magic SysRq.
La suppression des bibliothèques partagées ou de rm
ne devrait poser aucun problème, car les deux auraient été chargées en mémoire au démarrage de rm
.
Donc je l'ai fait dans un Ubuntu en cours d'exécution 14.10 VM inside Virtualbox . Je n'ai pas pris la peine de l'installer moi-même mais j'en ai téléchargé un directement à partir de osboxes.org
L'exécution de Sudo rm -rf --no-preserve-root /
dans un terminal a provoqué ceci:
Ce n'était que la partie visible. Je ne l'ai pas laissé fonctionner très longtemps et j'ai arrêté la machine.
Donc, rm
n’a pas complètement réussi car il y avait encore des fichiers qui traînaient encore:/bin,/run, une partie de/lib et/var
Mais pas de/boot et pas de noyau, donc ce n’était plus amorçable même si les modules étaient toujours là.
Edit : Faites-le à partir d'une console (Ctrl-Alt-F1 ou Right-Ctrl F1 dans vbox ) est beaucoup plus réussie mais moins spectaculaire.
Il génère des erreurs concernant le fichier/sys qu'il ne peut pas supprimer, il en va de même dans/proc. Mais il ne reste plus rien après son achèvement. Seuls certains périphériques sous/dev et certains fichiers dans/run.
NE JAMAIS FAIRE CELA, mais si vous exécutiez Sudo rm -rf /
, la commande rm
, exécutée sous le nom root
, commencerait heureusement à la suppression. S'il trouve un fichier, il le supprimera. Si rm
trouve un répertoire, il le saisira, supprimera tous les fichiers, puis supprimera le répertoire. Finalement, rm
manquera de fichiers à supprimer ou supprimera un fichier dont rm
a besoin (comme une bibliothèque dynamique):
$ ldd $( type -p rm)
linux-vdso.so.1 => (0x00007ffd4a978000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f905b7be000)
/lib64/ld-linux-x86-64.so.2 (0x00007f905bbcc000)
Lorsque rm
supprime /lib/x86_64-linux-gnu/libc.so.6
ou /lib64/ld-linux-x86-64.so.2
, il se cassera probablement.
Linux tire sa philosophie d'Unix: "Les outils puissants sont puissants, gardez les doigts à l'écart des machines".
Si votre objectif est de supprimer le dossier/et tous les sous-dossiers, vous pouvez démarrer sur un Live PenDrive et utiliser Gparted pour supprimer la partition située sur/et la reconstruire, si vous le souhaitez. Si vous souhaitez que tous les autres dossiers de la racine se trouvant sur une partition se trouvent sous la racine, vous pouvez en faire autant avec les autres partitions. Vous ne pouvez pas le faire exprès à partir de la ligne de commande lorsque vous avez démarré.