Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon Un hombre borra todos los datos de su empresa al hacer rm -rf por error




Marco Marsala, propietario de una supuesta empresa de hosting, parece haber borrado todos los datos de unos 1535 clientes, por culpa de un error de código haciendo un script bash para borrar copias de seguridad antiguas. "La anterior noche ejecuté en todos los servidores un rm -rf {foo}/{bar} sin haber definido esas dos variables previamente". El Sr. Marsala ha confirmado que el código también ha borrado todas las copias de seguridad puesto que los discos donde se realizaban las copias de seguridad también estaban montados en ese momento.



Un hombre parece haber eliminado toda su empresa por un trozo equivocado de código.

Ejecuté en todos los servidores un rm -rf {foo}/{bar} sin haber definido esas dos variables previamente

El señor Marco Marsala ha cambiado de usuario y de fotografía al ver que su mensaje en serverfault.com ha sido publicado en varios medios de comunicación ingleses.

El Señor Marco Marsala explicando en una cena a sus amigos, entre risas, como usar el comando rm -rf

rm es un comando de la familia de sistemas operativos Unix usada para eliminar archivos y directorios del sistema de archivos. rm -rf es frecuentemente usado en bromas y anécdotas sobre desastres. Su uso en bromas es similar al de format c: en Windows.


¿Por qué  Marsala ejecutó ese comando? En realidad, era parte de su procedimiento de copia de seguridad escrito en bash script, supuestamente destinado a eliminar copias de seguridad antiguas. Sin embargo, debido al error,  acaba de eliminar todo lo que podría tener en sus manos, incluyendo los sitios web de los clientes. Debido a Marsala no tenía una copia de seguridad en algún lugar seguro, podría haber perdido gran cantidad de datos.

Al decirle accidentalmente a su servidor una orden de borrado ha eliminado aparentemente todo rastro de su compañía y los sitios web de sus clientes.




Comando rm en GNU/Linux


rm - remove files or directories
 -f, --force
              ignore nonexistent files and arguments, never prompt
 
 -r, -R, --recursive
              remove directories and their contents recursively
 
 
-r (recursive - recursivo)
-f (force - forzar)

Bueno en realidad ejecutar rm -rf / no ocurre nada:
# rm -rf /
rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe  

Ejemplos catastróficos del uso de rm con los parámetros -rf 


El primer error sería ejecutarlo como root (#) sin usar sudo -

Cuidado con el uso de "Espacios" en falso

Pero hay errores simples que pueden  ocurrir por añadir un espacio:
# rm -rf / temp

En vez de rm -rf /temp

Tranquilo, no serás el primero que ejecuta rm -rf * .log en vez de rm -rf *.log

Cuidado con el uso de wildcars como * y  ~

Lo mismo con:

# rm -rf /temp *

En vez de rm -fr /temp*

O algo parecido con:

 # rm -rf . /
En vez de borrar el directorio actual: rm -rf ./


# rm . *
 En vez de # rm .*

Y por supuesto el uso de variables no definidas como el caso de Marco Marsala.

rm -rf $dir/
Pero si dir no está definido se ejecutará como rm -rf /

¿Cómo puedo prevenir accidentes con rm-rf /*? 

Recuerda que Ctrl + c puedes cancelar el comando actual accidental.

Usar

alias rm="rm -i"
rm () { /bin/rm -i "$@" ; }

Debería  preguntarte uno por uno antes de eliminar un fichero, pero no te salvará siempre si el usuario hace siempre click a "y"

 if [ -n "$PS1" ] ; then
rm ()
{
ls -FCsd "$@"
echo 'remove[ny]? ' | tr -d '12' ; read
if [ "_$REPLY" = "_y" ]; then
/bin/rm -rf "$@"
else
echo '(cancelled)'
fi
}
fi
Y recuerda que no hay alias rm en todos las máquinas que usas.....

Usar el echo antes de ejecutar:

echo rm -rf /temp*

Aunque uno de los mejores trucos es poner # en el comienzo del comando rm


root@localhost:~# #rm -rf /

Esto previene la ejecución accidental de rm en el archivo/directorio equivocado. Una vez verificado, puedes eliminar # desde el principio. Este truco funciona, porque en un principio de palabra con Bash # causa esa palabra y todos los caracteres restantes en esa línea sea ignorado. Así que el comando es simplemente ignorado.

Otra manera es usar:

xargs rm < lista

O usar el paquete safe-rm



 ¿Qué pasa realmente cuando ejecutas “rm -rf” en una máquina con Linux?


Hay un pequeño vídeo para mostrar qué pasa exactamente al ejecutar “rm -rf” en una máquina con Linux.

Realmente no pasa nada, a no ser que utilices el parámetro --no-preserve-root. Aún así, por favor, no ejecutes nunca jamás estos comandos en servidores. Algunas distribuciones no permiten que lo ejecutes, pero otras, generalmente más antiguas, felizmente borrarán todo el sistema.




Ejecutar como root:

rm -rf --no-preserve-root /

No es una buena idea.

Aunque muchos directorios "especiales" (o en uso) no pueden ser eliminados, el sistema quedará inservible (cuando reinicies, no con reboot, no con ningún comando que haya en /bin o /usr/bin porque habrán desaparecido, tendrás un bonito "kernel panic"):

rm: cannot remove '/...': Operation not permitted
rm: cannot remove '/...': Device or resource busy
Directorios que no pueden ser eliminados:

  • /dev. This is where device files are stored.
  • /proc—in-memory filesystem created by the kernel.
  • /run, a standardized file system location for daemons.
  • /sys. This allows you to get information about the system and its components.

root@ehn:/# echo *dev proc run sys# echo /dev/pts/*/dev/pts/0 /dev/pts/3 /dev/pts/ptmx

Realmente no es la primera ni la última vez que ocurre, ya que el tema ha sido rápidamente marcado como duplicado (además de ser bloqueado):


Los consejos de los expertos de Serverfault.

(La primera sería hacer copias de seguridad remotas pero como ya ha dicho que no tiene backup)  le proponen:

  • Hacer una imagen remota del disco duro con dd (ddrescue o dd_rescue si hay errores)
  • No instalar nadas para no sobreescribir los datos que queden
  • Usar herramientas de recuperación o borrado de datos accidentales como TestDisk
Recuperar ficheros borrados accidentalmente en Linux


Recuperar particiones borradas  en Linux

  • GNU Parted
  • TestDisk
  • Gpart


Lo mismo ocurre con sentencias SQL algo peligrosas, como un delete from sin poner el where (igual con el update)

DELETE FROM table_name WHERE some_column=some_value



Fuentes:
http://www.independent.co.uk/life-style/gadgets-and-tech/news/man-accidentally-deletes-his-entire-company-with-one-line-of-bad-code-a6984256.html
http://serverfault.com/questions/769357/recovering-from-a-rm-rf/769400

Vía:
https://www.meneame.net/m/tecnolog%C3%ADa/hombre-borra-todos-datos-empresa-hacer-rm-rf-error

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.