IMPORTANTE: Los sistemas UEFI modernos montan el firmware bajo el /sys
directorio y ponerlo a disposición del sistema operativo. NO ejecute este comando en un sistema moderno, ya que eliminará este firmware, esencialmente bloqueando su máquina.
El escenario más simple que se me ocurre es que alguien quiera eliminar todos los datos de su disco. Puede haber razones perfectamente legítimas para hacer esto y la forma más sencilla que se me ocurre es
rm -rf --no-preserve-root /
Resulta que este en realidad se da como ejemplo en 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.
Otra razón perfectamente buena es que desea eliminar un sistema de archivos montado que ha chroot
-ed en. En ese caso, rm -rf --no-preserve-root /
eliminará el sistema en el chroot
ambiente pero dejará el suyo intacto.
Estoy seguro de que hay más razones posibles, pero en general parece un enfoque muy razonable que mi sistema me permita hacer lo que quiera con él. Es mi trabajo ser cuidadoso, el sistema solo debe permitirme hacer lo que quiero que se haga. Si lo que quiero es una estupidez, es problema mío y no del sistema operativo.
De todos modos, esta es una restricción relativamente nueva, se agregó en la 7ma versión de la especificación POSIX (la anterior está aquí), antes de eso rm -rf /
era una orden perfectamente válida. En una nota histórica, el .
y ..
los directorios siempre han estado protegidos de rm
, desde 1979, cuando rm
adquirió por primera vez la capacidad de eliminar directorios. Más sobre eso aquí.
La existencia del --no-preserve-root
cambiar no es para añadir funcionalidad adicional pero para anular una reducción muy sana en la funcionalidad. Es probable que este cambio se base en la filosofía de que la computadora debe hacer lo que se le dice y que los comandos deben estar disponibles para expresar cualquier acción deseada. Este cambio es anterior a UEFI y, según mi experiencia, digo que ahora está obsoleto.
En la práctica moderna, sin este interruptor, el rm
El comando evita la eliminación accidental del directorio raíz cuando se utiliza una variable no inicializada o un espacio extraviado.
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
Nota al pie divertida:la protección no era su intención. Según un blog de Sun Microsystems, eliminando el /
directorio eliminará implícitamente el directorio de trabajo actual, una violación de la consideración especial ya hecha para el .
y ..
directorios. Es por eso que su comité de estándares permitió esta excepción especial, no para prevenir un accidente. Este cambio se introdujo por primera vez con Solaris 10 compilación 36.
http://archive.is/5lmc9