¿Cuál es la razón de esta secuencia específica "rm" en la broma xkcd?


14

Aquí hay parte de esta tira cómica xkcd donde la idea es que el autor no puede escribir un programa de clasificación, por lo que agrega código para eliminar todos los archivos

system("rm -rf ./");
system("rm -rf ~/*");
system("rm -rf /");

AFAIK, la forma canónica de eliminar todo es hacerlo rm /para que todo lo que comienza desde la raíz se elimine. Aquí este es el último comando y los dos comandos anteriores que intentan con rmel directorio actual y los contenidos del directorio de inicio.

¿Por qué no solo rm /?

Respuestas:


19

Si comienza en la parte superior, es posible que elimine algo que rm(u otra parte crítica del sistema) necesita continuar, y la maldad quedará incompleta.

Estos comandos se asegurarán de que al menos el cwd y el directorio de inicio del usuario hayan desaparecido antes de volverse nucleares.


55
JFTR como rm se carga en la memoria, debería funcionar y seguir funcionando incluso si se eliminan las variables necesarias. Después de ejecutar rm -rf /una sesión interactiva, su shell debería seguir funcionando
Ulrich Dangel

8
Los rms recientes fallarán en el último comando con rm: it is dangerous to operate recursively on ‘/’; aparte de eso rm, no requiere acceso a ningún recurso después de la inicialización. Una razón para usar varios comandos podría ser que el usuario podría tener diferentes permisos de acceso a esos directorios.
Stéphane Gimenez

@UlrichDangel, descubrí el camino difícil en Solaris hace mucho tiempo ...
vonbrand

1
Va a. Realmente necesitas usar rm --no-preserve-root /para que esto realmente funcione
Max

1
"Estos comandos se asegurarán de que al menos el cwd y el directorio de inicio del usuario hayan desaparecido antes de volverse nucleares". ¿Qué pasa si ejecutamos ese script cuando estamos en "/ bin /" :)? Los últimos dos comandos no se ejecutarán en absoluto.
XzKto

8

Solo para mostrar niveles crecientes de destructividad: elimine el directorio actual, luego $HOME, finalmente destruya todo.

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.