domingo, 22 de noviembre de 2015

Recuperar la contraseña Root en sistemas RHEL y derivados

  Siempre me he preguntado qué pasaría si olvido la contraseña del usuario administrador o root en un sistema Linux. Sabemos que con el comando passwd un usuario puede cambiar su contraseña y que el usuario root puede cambiar la contraseña de los demás usuarios, sin embargo, ningún otro usuario sin privilegios administrativos puede cambiar la contraseña de root (naturalmente) por lo que si olvidamos la contraseña del único usuario administrativo, cómo la recuperamos?

 El proceso que describo a continuación funciona para sistemas RHEL y derivados (Fedora y Centos).

  Primero debemos tener acceso al menú de arranque del sistema. Al reiniciar el sistema operativo debemos detener el arranque automático presionando cualquier tecla en el menú del grub.


  Una vez que hemos seleccionado nuestro sistema operativo, procedemos a presionar la tecla 'e' para editar la entrada correspondiente.

  Luego vamos hasta la línea donde se encuetra el kernel.

  Nos posicionamos al final de la línea y agregamos el parámetro rd.break


  Luego de esto, procedemos a presionar Crtl-x para arrancar el sistema con la entrada editada. Esto ocasionará que el sistema se detenga y nos arroje un shell dentro del initramfs, antes de montar el resto del sistema.


  Dentro de este shell podemos montar el root filesystem, simplemente necesitamos ejecutar el comando

mount -o rw, remount /sysroot

  De hecho dentro de sysroot se encuentran todos los archivos del sistema, así que una vez que los hemos montado en modo lectura-escritura podemos utilizar el comando passwd y cambiar la contraseña del usuario root.

  Primero debemos cambiar al root /sysroot ejecutando el comando

chroot /sysroot

  Una vez hecho esto, podemos ejecutar el comando passwd y cambiar la contraseña del usuario root.

  El último paso consiste en hacer un relabel de los archivos del sistema linux, ya que si estamos utilizando RHEL o derivados este procedimiento habrá cambiado el contexto del archivo passwd, lo que nos dará problemas con SELinux.

  Para hacer el relabel automático en el próximo arranque, sólo necesitamos crear un archivo vacío en el directorio raíz llamado .autorelabel

touch /.autorelabel

  Listo, solamente necesitamos continuar con el proceso normal de arranque, para ello utilizamos el comando exit para salir del chroot y del ram filesystem.

Espero que les sea útil.

No hay comentarios:

Publicar un comentario