¿Hasta dónde puede llegar con rm -rf / as root


23

Si eres root y emites

rm -rf / 

Entonces, ¿hasta dónde puede llegar el comando? ¿Puedes recuperar datos de este tipo de acción? Incluso después de que desaparezcan los archivos binarios, ¿seguirían activos los procesos en ejecución? ¿Qué se necesitaría para hacer que la misma máquina física arranque nuevamente? ¿Qué archivos necesitarías restaurar para que esto suceda?

Podría probar esto en una máquina virtual y ver, pero quiero saber la razón detrás de qué esperar si hago esto.



1
@Ste True, pero siempre que no se copie / pegue, generalmente lo dejamos pasar, ya que tenemos cierta superposición con otros sitios
Michael Mrozek

Respuestas:


21

Este comando no hace nada, al menos en el sistema operativo que uso (Solaris) con el que se implementó por primera vez esta característica de seguridad:

# rm -rf /
rm of / is not allowed

En otro * nix, especialmente en la familia Linux, si se proporciona un Gnu rm lo suficientemente reciente, necesitará agregar la --no-preserve-rootopción para permitir que se complete el comando (o al menos comenzar).

Hasta dónde llegaría este comando no está definido. Depende de muchos eventos más o menos impredecibles. En general, los procesos pueden ejecutarse incluso después de que se hayan eliminado sus archivos binarios.


55
Al principio no te creí, pero ahí está . Es difícil de creer que tomó hasta 2005 (Sun / BSD) y 2006 (GNU) para detener este horrible error.
anfetamáquinas

3
Todavía puedes usar rm -rf /*para eliminar CUALQUIER COSA
Felix Yan

1
De hecho, pero en ese caso no hay nada que rm pueda hacer (fácilmente) ya que la expansión del archivo ya está hecha por el shell antes de que se llame rm.
jlliagre

4

Incluso con la excelente respuesta de jlliagre, recuerde que todavía es algo muy peligroso. Siempre revisa dónde estás antes de hacer cosas como rm -rf. Sería catastrófico si tuviera que hacerlo rm -rf *mientras está en el directorio / usr, por ejemplo.

En cuanto al resto de sus preguntas, lo que puede recuperar depende de sus procedimientos de respaldo. En la mayoría de los sistemas * nix no hay una manera simple de recuperar archivos y directorios una vez que se han eliminado. A diferencia de los viejos días de DOS, donde los archivos todavía estaban en el disco después de que se realizó una eliminación, la mayoría de los sistemas actualmente hacen cosas que dificultan la recuperación. Esta es una de las razones por las que los servicios de recuperación de datos son tan caros.

Si está utilizando una VM, le recomiendo hacer instantáneas de vez en cuando como mínimo. Pero nada puede superar siguiendo un buen plan de respaldo.


2

Como algunas personas dijeron, aún puede usar sudo rm -rf /*para eliminar cualquier cosa. Sin el asterisco también funciona en OS X. Alguien ha hecho un video sobre la destrucción de OS X Yosemite de esta manera, y estoy seguro de que el sistema operativo basado en Linux experimentará lo mismo.

Las cosas lentamente comienzan a volverse irresponsables. No creo que todo se haya eliminado, ya que el terminal se congeló mientras ocurría el proceso, pero fue suficiente para congelar todo y hacer un reinicio forzado.

Intentar reiniciar provoca un modo de usuario único como la pantalla de inicio con errores.


1
Si eso puede dar algo de consuelo, sudo rm -rf /*no eliminaría los archivos y directorios ocultos /. Tampoco podría eliminar archivos enmascarados por otro punto de montaje, archivos en sistemas de archivos de solo lectura o pseudo-sistemas de archivos, archivos inmutables o puntos de montaje.
Stéphane Chazelas

@ StéphaneChazelas Eso también se mostró en el metraje. Hubo errores con el sistema de archivos de lectura. A pesar de no eliminar todo, fue suficiente para congelar y destruir el arranque (del sistema, no EFI)
TheBro21

2

Acabo de probar con Ubuntu 16 y la estación de trabajo vmware y con la opción no-preserve-root borró todo el disco de mi sistema Linux en ejecución. después de que se terminó, toda la aplicación de estación de trabajo vmware se volvió inestablemente inestable e incluso fue imposible apagar o reiniciar la máquina virtual desde la aplicación. Matar el vmx fue rechazado ¡solo un reinicio del host funcionó después de eso!


¡Agradable! :) Esto es lo que esperaba escuchar de alguien.
Sudipta Chatterjee

1

Uno no puede simplemente destruir su sistema emitiéndolo rm -rf /como root. Inicialmente, el comando se emitirá en modo a prueba de fallos, lo que restringirá el uso de rmon /pero, incluso --no-preserve-rootcomo argumento, el sistema en ejecución no permitirá la eliminación de los procesos en ejecución del disco; sin embargo, el resto de los programas y archivos serán eliminados, dejando un sistema inutilizable con (casi) ¡ningún programa para ejecutar! Verifique las capturas de pantalla alquiladas aquí, el comando se emitió en Arch Linux en Virtual Box: http://bit.ly/q9CsA4


¿Puedes subir las fotos a alguna parte? Descargar un archivo tar, descomprimir y ver todos los archivos no es algo que la mayoría de la gente vaya a hacer. Ah, y los acortadores de URL no están permitidos en SE, siempre use el enlace real
TheLQ

3
Usted escribió: "el sistema en ejecución no permitirá eliminar procesos en ejecución del disco". En lo que respecta a * nix, esto es incorrecto. Esta limitación existe en Windows, pero puede eliminar (desvincular) archivos en Unix / Linux incluso mientras se ejecutan.
jlliagre

2
"... el sistema en ejecución no permitirá eliminar procesos en ejecución del disco ..." Esto es, me temo, no es cierto: los archivos que no se pueden eliminar en su ejemplo no son realmente 'archivos' reales - proporcionan acceso a dispositivos de bloque, módulos de kernel y otros componentes internos del sistema. Realizar una operación de eliminación en ellos no tiene sentido y no se puede hacer incluso como root.
Nathan Osman el

Aquí están las fotos de Abhisek compartidas en la galería en línea: min.us/mSQcqHGQA min.us/moyPvnYOw (a pedido de TheLQ)
Artem Pelenitsyn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.