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!

KeePassX

Sitio Oficial KeePassX