GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay algún escenario en el que se necesite rm -rf -no-preserve-root?

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


Linux
  1. Linux:¿por qué no hay un sistema de archivos Rootfs presente en el sistema?

  2. ¿A dónde van los archivos si monta una unidad en una carpeta que ya contiene archivos?

  3. ¿Dónde está .bashrc?

  4. ¿Dónde puedo encontrar el código fuente del comando cp?

  5. ¿Por qué es necesario modificar las tablas de llamadas del sistema en Linux?

No hay repositorios habilitados solución RHEL

¿Dónde puedo encontrar la primera versión del sistema operativo Linux?

¿Dónde está documentada la ABI x86-64 System V?

¿Hay un comando UNIX para enumerar todos los archivos eliminados recientemente de un sistema?

¿Existe un sistema de archivos de almacenamiento a nivel de bloque?

Linux:dónde colocar el archivo de intercambio