IMPORTANT : Les systèmes UEFI modernes montent le firmware sous le /sys
répertoire et le mettre à la disposition du système d'exploitation. NE PAS exécuter cette commande sur un système moderne car il supprimera ce firmware, bloquant essentiellement votre machine.
Le scénario le plus simple auquel je puisse penser est que quelqu'un veuille supprimer toutes les données de son lecteur. Il peut y avoir des raisons parfaitement légitimes de le faire et le moyen le plus simple auquel je puisse penser est
rm -rf --no-preserve-root /
Il s'avère que celui-ci est en fait donné en exemple dans info rm
:
`--no-preserve-root'
Do not treat `/' specially when removing recursively. This option
is not recommended unless you really want to remove all the files
on your computer.
Une autre raison parfaitement valable est que vous souhaitez supprimer un système de fichiers monté que vous avez chroot
-ed dans. Dans ce cas, rm -rf --no-preserve-root /
supprimera le système dans le chroot
environnement mais laissera le vôtre intact.
Je suis sûr qu'il y a plus de raisons possibles, mais en général, cela semble une approche très raisonnable que mon système me permette de faire ce que je veux avec. C'est mon travail d'être prudent, le système ne doit me permettre de faire que ce que je veux faire. Si ce que je veux est stupide, c'est mon problème et pas celui du système d'exploitation.
Quoi qu'il en soit, il s'agit d'une restriction relativement nouvelle, elle a été ajoutée dans la 7ème version de la spécification POSIX (la précédente est ici), avant cela rm -rf /
était une commande parfaitement valide. Sur une note historique, le .
et ..
les répertoires ont toujours été protégés de rm
, depuis 1979, lorsque rm
a d'abord acquis la possibilité de supprimer des répertoires. Plus d'informations ici.
L'existence du --no-preserve-root
le commutateur n'est pas à ajouter fonctionnalité supplémentaire mais à remplacer une réduction très sensée de la fonctionnalité. Ce commutateur est probablement basé sur la philosophie selon laquelle l'ordinateur doit faire ce qu'on lui dit et que des commandes doivent être disponibles pour exprimer toute action souhaitée. Ce commutateur est antérieur à UEFI, et d'après mon expérience, je dis qu'il est maintenant obsolète.
Dans la pratique moderne, sans ce commutateur, le rm
La commande évite la suppression accidentelle du répertoire racine lors de l'utilisation d'une variable non initialisée ou d'un espace parasite.
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
Note de bas de page amusante :la protection n'était pas son intention. Selon un blog de Sun Microsystems, suppression du /
répertoire supprimera implicitement le répertoire de travail actuel, une violation de la considération spéciale déjà faite pour le .
et ..
répertoires. C'est pourquoi leur comité des normes a autorisé cette exception spéciale - pas pour prévenir un accident. Ce changement a été introduit pour la première fois avec Solaris 10 build 36.
http://archive.is/5lmc9