2012-05-28 27 views
7

ADVERTENCIA: Secuencia de comandos peligrosa. ¡No corras desde tu línea de comando!¿Qué tan peligroso es este script bash?

Vi esto en un correo electrónico de la empresa de broma. ¿Puede alguien me explique por qué esta escritura del golpe es más peligroso que un normal 'rm-rf' comando ?:

nohup cd /; rm -rf * > /dev/null 2>&1 & 

En particular, ¿por qué se utilizan nohup y cuáles son los elementos al final de?

ADVERTENCIA: Secuencia de comandos peligrosa. ¡No corras desde tu línea de comando!

+1

Esto es solo marginalmente una pregunta de programación – DGM

+1

'--no-preserve-root' (silbido) –

Respuesta

4

2>&1 toma stderr (identificador de archivo 2) y redirige a stdout (identificador de archivo 1). & por sí mismo coloca el comando rm en segundo plano. nohup permite que un trabajo siga funcionando incluso después de que la persona que lo inició cierra sesión.

En otras palabras, este comando hace todo lo posible para eliminar todo el sistema de archivos, incluso si el usuario hace clic en su terminal/shell.

+1

"identificador de archivo" también conocido como "descriptor de archivo" –

+1

Afortunadamente, el mejor guión no es tan malo como quería su autor. Él o ella tenía tanto miedo de su propia idea que no la probó :-) – choroba

2

nohup [..] & hace que se ejecute en segundo plano, incluso después de que el usuario ha cerrado la sesión (por lo que es más difícil de detener, supongo)

2>&1 redirige stderr a stdout

> /dev/null descartes nada que provenga de la salida estándar

El comando básicamente no parece hacer nada, ya que el sistema de archivos se destruye lentamente en el fondo.

2

nohup significa que se ignorará la señal de colgar, lo que significa que va a seguir funcionando incluso si el usuario ya no se ha iniciado sesión.

cd/mueve el usuario en el directorio raíz

rm-rf * elimina todos los archivos recursivamente (atraviesa todos los directorios) y con fuerza (no importa si los archivos están en uso)

La pieza en el extremo redirige todos los resultados a ninguna parte. En esencia, debe formatear su disco a nada.

+0

Habría obtenido una respuesta máxima si ha elaborado un poco más las redirecciones. Además, no mencionó el fondo 'y' al final. Buena respuesta sin embargo. – derek8

6

Puede probar algo menos "peligroso":

nohup cd /; find * >/dev/null 2>&1 & 

Me estoy poniendo esto:

nohup: ignoring input and appending output to `nohup.out' 
nohup: cannot run command `cd': No such file or directory 
[2] 16668 

Así, nohup parte no hace nada, sólo se desencadena un error. La segunda parte (del script original) intenta eliminar todo en su directorio actual, y no puede ser detenido por Ctrl-C, porque se ejecuta en segundo plano. Toda su salida se redirige a vacío, por lo que no ve ningún mensaje de progreso de 'acceso denegado'.

+0

¿No debería ser 'nohup cd /'? – derek8

+0

@ derek8: Copiar y pegar el error, gracias, corregido. – choroba

+0

¿Pero todavía le da ese error? – derek8

3

La broma es una especie de rompe, es obvio que no ha sido probado, que significaba

nohup sh -e "cd/; rm -rf *" > /dev/null 2>&1 & 

o

nohup rm -rf/> /dev/null 2>&1 & 

de lo contrario el nohup cd /; parte se considera una línea separada por el caparazón. y la segunda línea acaba de generar rm -rf * que recursivamente rm su directorio actual (menos los archivos con el nombre comenzó con.)

Cuestiones relacionadas