Emergencias en Linux

Qué hacer en una emergencia

Simplificando mucho podemos encontrarnos con tres posibles emergencias:

  1. hemos olvidado la contraseña de root: no es un gran problema.
  2. el sistema está dañado y no arranca o funciona mal: puede ser un verdadero desastre.
  3. hemos borrado documentos personales importantes: en la consola no hay forma ‘fácil’ de desborrarlos, en las X tenemos la Papelera. Pero esto no es una verdadera emergencia ni nos debería preocupar demasiado, ya que hacemos copias de seguridad habitualmente ¿verdad? Simplemente haremos un restore.

Ante un desastre de este tipo, el protocolo a seguir será:

  1. Actuar sin pánico: en la mayoría de los casos conseguiremos recuperar el sistema. Siendo positivos, es una buena forma de aprender, la forma difícil.
  2. Conseguir un dispositivo de rescate.
  3. Arrancar la máquina desde el dispositivo de rescate.
  4. Intentar recuperar el sistema.
  5. Si hemos investigado el problema y no encontramos la solución, preguntar a otros.
  6. Si no somos capaces de resolver el problema de ninguna manera tendremos que reinstalar el sistema desde cero. Pocas veces es necesario, pero, como dijo Forrest, "a veces ocurre".

Dispositivos de rescate en Linux

Para poder arrancar la máquina necesitamos un dispositivo de rescate, un disquete o un CD que contiene un sistema de archivos raíz, un gestor de arranque, un kernel y las utilidades necesarias y que permite arrancar un sistema Linux en un intento de "rescatar" un sistema dañado para evitar la reinstalación total del sistema. Tradicionalmente lo usual era utilizar un disquete como dispositivo de rescate pero hoy en día muchas máquinas ni siquiera tienen disquetera, por lo que actualmente se utilizan mucho los CDs. Tenemos varias opciones:

  • Lo más recomendable es utilizar un disquete de arranque o live-CD prefabricado, ya que es más sencillo que crear nuestro propio live-CD y será más completo (lista de live-CD).
  • También podemos crearnos nuestro propio disquete de arranque o live-CD.
  • Otra opción es usar como CD de rescate el CD-1 de Debian. Tecleando:

    rescue

    o bien:

    rescuegui

    entraremos en el modo rescate.

    Debian rescue

Arrancar la máquina desde un dispositivo de rescate

Para arrancar la máquina desde un dispositivo de rescate los pasos serán:

  1. configurar la BIOS para que arranque desde la unidad correspondiente.
  2. arrancar la máquina y hacer login como root, normalmente sin password.
  3. para acceder al contenido del disco duro tendremos que montarlo, ya que ahora "/" es el dispositivo de rescate. Para ver cuál es la partición a montar ejecutaremos:
    # fdisk -l

    Para montar (por ejemplo) la partición /dev/hda2 bajo /mnt, haremos:

    # mount /dev/hda2 /mnt

Una vez hecho esto ya podemos acceder a nuestro disco duro, teniendo en cuenta que ahora el archivo /etc/passwd del disco duro es /mnt/etc/passwd, ya que hemos montado el disco duro bajo /mnt.

Arrancar como root sin conocer el password con GRUB

Si hemos olvidado la contraseña de root y usamos GRUB como gestor de arranque no necesitamos un dispositivo de rescate: podemos arrancar como root sin conocer el password.

En el menú de GRUB, seleccionaremos el kernel que queremos usar, pulsaremos e para editar la entrada y volveremos a pulsar e para editar la línea:

kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro

La modificaremos de manera que quede:

kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro init=/bin/bash

Esto hace que el sistema arranque un shell root sin pedir password. Para comenzar el arranque pulsaremos b.

El teclado estará en inglés: en vez de "=", "/" y "-" usaremos "¡", "-" y " ".

La partición raíz suele montarse como sólo lectura, así que tendremos que volverla a montarla como lectura/escritura. Para ello, averiguaremos cuál es la partición raíz con:

# mount

y volveremos a montarla ejecutando (por ejemplo):

# mount -o remount,rw /dev/hda3

Ya podemos editar /etc/shadow y quitar la contraseña a root.

Recuperar una máquina Linux

Una vez arrancada la máquina, intentaremos recuperar el sistema y veremos si el desastre tiene solución.

  • Si hemos olvidado la contraseña de root: editaremos /etc/shadow y quitaremos la contraseña a root, sustituyendo la línea:
    root:TBe1jvLU$QWNBxcwdVM:12173:0:99999:7:::

    por:

    root::12173:0:99999:7:::

    Problema resuelto, root ya no tiene password. A continuación, reiniciamos la máquina, hacemos login como root sin contraseña y asignamos una contraseña a root ejecutando el comando passwd:

    # passwd

    Atención

    En el dispositivo de rescate probablemente sólo habrá un editor disponible y será Vi o Nano, por lo que más vale aprender a usarlos.

  • Si el sistema está dañado y no arranca o funciona mal
    • salvar los archivos de datos: normalmente la primera tarea de rescate es copiar los archivos valiosos fuera del disco que tiene problemas. Tenemos varias opciones:
      • instalar un segundo disco duro, formatearlo y copiar en él los archivos desde el disco duro con problemas.
      • copiar los datos a disquete o CD.
      • copiar sobre la red, usando el comando scp proporcionado por OpenSSH.
    • puede que hayamos borrado archivos del sistema por descuido: si accidentalmente hemos borrado archivos importantes del sistema no hay forma de desborrarlos. La única posibilidad de recuperar la máquina es que esos archivos existan en el dispositivo de rescate y los copiemos al disco duro. Por ejemplo, si hemos borrado /bin/login del sistema, montaremos el sistema de archivos raíz en /mnt y usaremos el comando (la opción -a conserva los permisos):
      # cp -a /bin/login /mnt/bin/login
    • puede que se haya corrompido el sistema de archivos: para reparar desde el dispositivo de rescate un sistema de archivos Ext3 dañado usaremos el comando (la unidad o partición debe estar desmontada):
      # e2fsck
    • puede que se haya corrompido el superbloque: una causa común de problemas en un sistema de archivos es la corrupción del superbloque. El superbloque contiene la información acerca del estado del sistema de archivos, tamaño, bloques libres, etc. Si se corrompe, el sistema no puede reconocer nada del sistema de archivos. Cualquier intento de montar el sistema de archivos fallará y e2fsck no será capaz de arreglar el problema.

      Por suerte, el sistema de archivos Ext3 salva copias del superbloque en los limites de los grupos de bloques en el disco, normalmente cada 8K bloques. Para decirle a e2fsck que utilice la copia del superbloque almacenada en el bloque 8193 utilizaremos el comando:

      # e2fsck -b 8193 <partici&oacute;n>
  • Si hemos borrado documentos personales importantes y no tenemos copias de seguridad, ya podemos empezar a rezar…

Artículos en la categoría "Lo más básico en Linux"

  1. Lo más básico en la terminal de Linux
  2. Cómo apagar el ordenador en Linux
  3. Cómo conseguir ayuda en una máquina Linux
  4. Abrir un shell en el entorno gráfico en Linux
  5. Hardware en Linux
  6. Copiar/Pegar en Linux
  7. Activar NumLock en Linux
  8. El menú Debian
  9. Iconos en el escritorio en Linux
  10. Salvapantallas en Linux
  11. Formatos libres y propietarios en Linux
  12. Proceso de arranque en Linux
  13. El kernel Linux 2.6
  14. Emergencias en Linux

Un comentario:

  1. Usuario malvado... juajajajaja

    Habría alguna manera de hacer algún script (no tengo ni idea de hacer scripts, pero quiero aprender) que te modifique el /etc/shadow como tu indicas para que luego el mismo script te ponga una contraseña aleatoria? i luego hacer un segundo script dónde haga lo mismo, pero que en vez de crear la contraseña aleatoria te haga escribir la nueva contraseña?.
    Me gustaría saberlo, por que sería muy útil cara a la seguridad, con el primer script crearía una contraseña bastante compleja (o eso espero), y el segundo script lo utilizarías para hacer algo como root (por ejemplo instalar algún paquete útil a tu servidor web con Linux o para tu firewall, etc).

    Posibles problemas:
    Si utilizas el primer script, mátate en descifrar la contraseña, entonces que el primer script aparte de modificar la contraseña que te la escribiese en un documento de texto, para así copiar y pegar a la hora de ejecutar el segundo script

    Si alguien me hace caso y escribe algún otro problema, intentaré responder. Es para que un “paranoico de la seguridad (aparte de ser un PURO LAMMER)” me deje tranquilo y me tiene harto, MUY HARTO, si queréis saber más sobre el paranoico podéis contactar conmigo a: [email protected] si os contara la de paranoias “que le han pasado” sacaríais la siguiente conclusión: Muérete loco, como quieres que pase eso, o tu método para proteger los datos no sirve en absoluto.
    Post Data: El paranoico no tiene ni servidor web ni firewall (ya le gustaría), era sólo ejemplos que podían ser claros a la hora de proteger los datos; un servidor web con muchos datos es más tentador para un hacker que un ordenador personal
    Post Data 2: Perdón por el… SÚPER COMENTARIO DEL AÑO!