Cambiar contraseña olvidada de root en CentOS 7 o RedHat 7

Un clásico en los sistemas operativos ha sido conocer formas de recuperar o cambiar la contraseña del usuario con permisos administrativos del servidor, normalmente root en sistemas linux.

Para hacerlo han existido varias formas pero algunas de ellas han dejado de funcionar en sistemas Centos 7 o Redhat 7, como editar con un live cd el /etc/passwd o iniciar en modo single user.

Supongamos entonces esta situación en resumen:

  • No sabemos la contraseña de root
  • No hay usuarios dentro del grupo wheel o tampoco sabemos su contraseña
  • Tenemos acceso al inicio del sistema y al servidor
  • SElinux está desactivado. Es posible hacerlo con SElinux pero en este articulo lo he simplificado

Usando el disco de instalación

La forma mas sencilla seria con el disco de instalacion de forma parecida al modo single. En RedHat Linux existe la opción "Troubleshooting - Rescue a Red Hat Enterprise Linux System" para ello, lo que nos permite hacer un chroot al sistema para hacer un passwd.

chroot /mnt/sysimage

Usando grub2 y rd.break

Otra forma mas versatil ya que no requiere disco de instalacion es editando los parametros de grub2.

Para ello iniciamos el sistema y en el menu de grub 2 pulsamos la "e" para entrar en modo edicion.

Aqui veremos una linea de texto que tiene escrito normalmente linux16 o linuxefi al comienzo, en la cual tenemos que borrar los parametros rhgb y quiet, que suelen estar hacia el final de la misma y nos permiten ver los mensajes del sistema.
Ademas en esta linea escribiremos rd.break

rd.break interrumpe el arranque antes de que el control de sistema lo tome systemd.

Una vez hecho podemos iniciar el sistema con los parámetros nuevos con Ctrl+x, lo que dejara el sistema montado en modo lectura en /sysroot, asi que solamente tenemos que remontarlo en modo escritura:

mount -o remount,rw /sysroot

y entramos en un entorno enjaulado

chroot /sysroot

Ahora ya podemos cambiar la contraseña de root con passwd

Para reiniciar correctamente el sistema salimos del chroot

exit

remontaremos en modo lectura

mount -o remount,ro /

y salimos del rd.break para que continúe el arranque del sistema

exit

Mas informacion