GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un scénario où rm -rf -no-preserve-root est nécessaire ?

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


Linux
  1. Où vont les fichiers si vous montez un lecteur dans un dossier contenant déjà des fichiers ??

  2. Chown uniquement là où c'est nécessaire / Accélérer Chown ?

  3. D'où puis-je trouver le code source de la commande cp ?

  4. Existe-t-il une commande UNIX pour répertorier tous les fichiers récemment supprimés d'un système

  5. Existe-t-il un système de fichiers de stockage au niveau des blocs ?

Il n'y a pas de référentiels activés Solution RHEL

Où puis-je trouver la première version du système d'exploitation Linux ?

Où puis-je trouver le code source des appels système ?

Quelle est l'interface pour les appels système ARM et où est-elle définie dans le noyau Linux ?

Où l'ABI x86-64 System V est-elle documentée ?

Linux :où placer le fichier d'échange