jueves, 3 de julio de 2014

Reset al password de Root desde GRUB (Debian)

El otro día estaba trabajando en el mantenimiento de algunas máquinas virtuales (VM, Virtual Machine) y me pasó que no recordaba la password de Root ni de ningún otro usuario. Oh! Pobre de mí, en qué lío me metí! ¿!Qué fue lo que hice!? ¿En qué momento cambié la clave que no recuerdo? Luego siguieron algunos pensamientos que no puedo reproducir pero ustedes pueden imaginarse…

Buscando en el blog encontré un viejo post del amigo elav para Cambiar la contraseña de root en Debian/LMDE. Lamentablemente a mi no me funcionó, así que acá les paso otro método.

Para almacenar mis claves utilizo, después de la recomendación de mi amigo Facundo, el KeePassX un excelente gestor de usuarios y contraseñas que es multiplataforma y por supuesto Software Libre!
Bien, el caso es que no recordaba la clave y además la que tenía almacenada en el KeePassX no funcionaba, para ningún usuario. Entonces después de darme por vencido por probar las mil y una claves que se me cruzaban por la cabeza simplemente me digné a hacer un reset a la password de Root desde GRUB para mi querido Debian.

Editando opciones de GRUB

El proceso es relativamente sencillo y lo único que necesitamos es tener GRUB instalado (sin mencionar que tenemos que tener el acceso para ver el arranque de la máquina, no?). En mi caso, me conecté con el virt-manager (tengo las VMs con KVM) y reinicié la máquina, pero esto también sirve para una máquina real.
grub
GRUB Boot
Cuando el GRUB arranca tenemos que editar las opciones de arranque presionando la tecla e.
Editando opciones de GRUB
Edición opciones de GRUB

Ahora debemos editar las opciones con las que arranca el sistema. Nos movemos hasta la línea que carga el kernel del sistema operativo. Es la línea que comienza con linux:

echo 'Loading Linux 3.2.0-4-amd64 ...'
linux /vmlinuz-3.2.0-4-amd64 root=/dev/mapper/seacat-root ro quiet
Lo que viene detrás de vmlinuz dependerá de la versión del kernel que tengan instalado. Así como también lo que aparece después de root= dependerá de cómo ustedes tienen instalado el sistema en su filesystem.
Y agregamos:

init=/bin/bash

Cuidado porque seguramente el mapa del teclado es el inglés por defecto y para nosotros los hispano-parlantes nos cambia algunos símbolos.

Después de la palabra quiet. La línea debe quedar:

linux /vmlinuz-3.2.0-4-amd64 root=/dev/mapper/seacat-root ro quiet init=/bin/bash

La contrabarra que se ve en la imagen aparece automáticamente para indicar que lo que está escrito abajo es parte de la misma línea anterior.
Una vez editado esto, nos basta con arrancar la máquina. Como dice en la imagen, con Ctrl+x o F10 arrancamos el sistema con estas opciones.
Esto nos devolverá un shell y podremos editar el archivo /etc/shadow.

Quitando la password de Root

shell después editar grub
Shell después de editar GRUB.

Como no tenemos un sistema completamente funcional veremos que en este caso bash tira algunos errores y de hecho tampoco limpia la pantalla. Pero no importa, porque para lo que lo necesitamos alcanza.
En la cuarta línea de la imagen nos aparece el prompt de la siguiente manera:

root@(none):/#

Lo primero que debemos hacer es remontar el filesystem para que tenga permisos de escritura. Para eso ejecutamos:

root@(none):/# mount -o remount rw /

Ahora sí, podemos proceder a editar con nano el archivo /etc/shadow.

Cuando abramos nano posiblemente nos tire también algunos errores. Pero no lo tenemos en cuenta y presionando Enter continuamos.


El archivo /etc/shadow en la primera línea tiene la información de root. Para cada línea tenemos un conjunto de campos y éstos están separados por dos puntos (:).
El primer campo corresponde al nombre de usuario, el segundo campo es el hash correspondiente a la password. Lo que tenemos que hacer es borrar todos los caracteres para que quede sin password de root. Como se ve en la imagen:
/etc/shadow sin password de root
Archivo /etc/shadow modificado sin password de root.

Guardamos el archivo con Ctrl+o y salimos de nano con Ctrl+x. Ahora sólo nos resta reiniciar la máquina. Cuando el sistema nos pida el login podremos ingresar como root sin tener que ingresar ninguna password.

Como hemos iniciado un shell que no está “bien cargado” para reiniciar la máquina tendremos que hacer un hard reset, es decir, presionar el botón de reset o en mi caso mandar la señal de Force Reset.
Login sin password de root
Login sin password de root

Una vez que el sistema inicia, ingresamos como root y ahora sí podemos ejecutar passwd y seteamos una nueva password de root:

# passwd


Espero que les haya servido!

Fuente: http://blog.desdelinux.net/reset-password-root-grub/

No hay comentarios:

Publicar un comentario