¿No puedes acceder a Linux? Así puedes recuperar la contraseña de root

¿No puedes acceder a Linux? Así puedes recuperar la contraseña de root

Rubén Velasco

Uno de los pilares fundamentales de Linux es su seguridad. Este sistema operativo, como otro cualquiera, hace uso de las contraseñas para evitar el acceso de usuarios no deseados al sistema. Cada usuario tiene su propia contraseña, además de un complejo nivel de privilegios que definen qué puede hacer, qué no y a qué partes del sistema operativo tendrá acceso y a cuáles no. Y por encima de todas las cuentas de usuario está la cuenta maestra, la cuenta de administrador: root.

La cuenta de root de los sistemas operativos Linux es la cuenta con mayor nivel de privilegios sobre el sistema. Esta cuenta es la equivalente a SYSTEM en los sistemas Windows, es la que tiene acceso a todo por encima de todo. Y, por lo tanto, es la que mejor se debe proteger, ya que todo aquel que tenga acceso a esta cuenta tendrá control total sobre el sistema operativo.

Si por algún motivo perdemos la cuenta de root, la verdad es que perderemos el control sobre nuestro ordenador. En caso de que esto ocurra, antes de optar por lo radical y reinstalar el sistema operativo (algo inviable en muchas situaciones), a continuación os vamos a explicar cómo recuperar esta contraseña para recuperar el control sobre el PC.

Diferencias entre root, su y sudo

Aunque para muchos estos 3 conceptos pueden parecerles lo mismo, en realidad hay bastantes diferencias entre ellos que debemos conocer.

El primero del que vamos a hablar es root. Root es la cuenta de superusuario de Linux, la que posee privilegios absolutos para hacer y deshacer en el sistema. Tan solo este usuario puede realizar configuraciones a bajo nivel, y es una de las medidas de seguridad y protección más básicas de los sistemas Linux. El resto de usuarios siempre tendrán un nivel de privilegios inferior. Y, además, no se recomienda nunca iniciar sesión con este usuario, sino usarlo a través de otros comandos para ganar privilegios.

Su, por otro lado, es el acrónimo de «substitute user», es decir, nos permite cambiar de usuario sin cerrar sesión con el usuario actual. Este comando se utiliza cuando tenemos que ejecutar comandos con otro usuario con más privilegios (como root, por ejemplo) desde terminal pero no queremos salir del nuestro. Con el comando «su», seguido del nombre del usuario, ejecutaremos los comandos directamente con su usuario.

Por último, vamos a hablar de sudo. Este comando, super user do, nos permite ejecutar programas y comandos con el nivel de privilegios de superusuario, pero con una serie de restricciones de seguridad definidas dentro de /etc/sudoers. Este es el comando más utilizado para trabajar con modo root, ya que es el más cómodo, sencillo y, por supuesto, recomendado.

Como vemos, al final el más importante de los tres es root. Los otros dos básicamente son «formas» de conseguir sus permisos. Si no conocemos, o hemos olvidado, la contraseña de root de cualquier distro Linux no podremos usar ni Su ni Sudo.

Cómo restablecer la contraseña de root en Linux

Este proceso no es muy complicado, y podemos hacerlo de dos formas distintas: usando un Live CD o desde el gestor de arranque GRUB de nuestra distro.

Usar un Live CD para recuperar el control de Linux

La primera de las recomendaciones que os vamos a hacer es recurrir a un Live CD de una distribución Linux para realizar esta tarea. Este método es el más sencillo, rápido e intuitivo que podemos usar para este proceso.

Lo primero que debemos hacer es crear un Live CD de Ubuntu en una memoria USB para poder arrancar el ordenador desde ella. También valdría con cualquier otra distro que tenga Modo Live.

Cuando arranquemos el ordenador, elegiremos la opción «Probar Ubuntu» y esperaremos a que cargue el sistema en la memoria RAM. Recordamos que el Modo Live no hace cambios en los discos duros, por lo que nuestros datos estarán seguros.

Recuperar contraseña administrador root Linux - 1

Una vez que tengamos ya nuestro Ubuntu cargado, el siguiente paso será abrir un terminal. Esto podemos hacerlo desde la lista de aplicaciones o con el atajo de teclado «Ctrl + Alt + T«.

Recuperar contraseña administrador root Linux - 2

Una vez tengamos el terminal delante, ejecutamos el siguiente comando para conseguir los privilegios de root en Ubuntu Live:

sudo su

El siguiente paso será identificar la partición en la que tenemos instalado nuestro Linux. Para ello, ejecutamos el siguiente comando:

fdisk -l

En nuestro caso es /dev/sda. Ahora el siguiente paso es montar la partición del sistema para poder trabajar con ella usando los siguientes comandos.

mkdir /mnt/recover mount /dev/sda1 /mnt/recover

Ya tenemos el Linux al que no podemos acceder dentro del Live Linux que acabamos de montar. Ahora ejecutaremos el siguiente comando para empezar a trabajar sobre este directorio:

chroot /mnt/recover

Recuperar contraseña administrador root Linux - 5

Ahora ejecutamos el siguiente comando para cambiar la contraseña de root en nuestro Linux:

passwd root

Si queremos cambiar la contraseña de cualquier otro usuario, podemos usar el mismo comando, pero cambiando «root» por el nombre del usuario en cuestión.

Ya hemos cambiado la contraseña de root. Ahora solo nos queda ejecutar «exit» para salir del chroot, el comando «umount /mnt/recover» para desmontar la partición del sistema que hemos montado y de nuevo «exit» para salir de root.

Ahora reiniciamos el ordenador y listo. La nueva contraseña de root ya está disponible para poder trabajar con ella.

Recuperar la contraseña de administrador desde GRUB

Si no tenemos una imagen Live de Ubuntu a mano y necesitamos recuperar la contraseña urgentemente, hay otra forma de hacerlo: a través de GRUB.

Para ello, reiniciaremos el ordenador, pero, en vez de entrar en nuestro Linux, nos quedaremos en el gestor de arranque, que probablemente sea GRUB. En él, seleccionaremos la opción «Opciones avanzadas para Ubuntu«. Y en la nueva pantalla que nos aparecerá elegiremos una de las entradas «Recovery Mode» que aparecerán.

Veremos el menú de recuperación de nuestro Linux. De todas las opciones que aparecen, la que nos interesa es la marcada como «root», ya que nos permitirá abrir una consola de superusuario.

Recuperar contraseña administrador root Linux - 11

Ya estamos dentro de una consola de recuperación con permisos de superusuario. Lo primero que haremos será montar la raíz de nuestro Linux con permisos de escritura (ya que por defecto solo tiene permiso de lectura) para poder trabajar con ella:

mount -o rw,remount /

Una vez hecho esto, ya solo nos queda usar el comando passwd para cambiar la contraseña de nuestro Linux:

passwd root

Listo. Ahora ejecutaremos los comandos «sync» y «reboot» para que los cambios terminen de aplicarse en el disco duro y reiniciar el ordenador.

Recuperar contraseña administrador root Linux - 12

Cuando arranque el sistema, ya podremos usarlo con la nueva contraseña de root que acabamos de establecer.

Cómo evitar que recuperen la contraseña de root

Como vemos, cualquier usuario podría romper la contraseña de superadministrador de nuestro Linux y conseguir acceso total a él. Simplemente necesitaría tener acceso físico al PC, y que el ordenador arranque desde una memoria para cargar la imagen Live, o simplemente tener acceso al GRUB del PC.

Si queremos reforzar la seguridad de nuestro ordenador podemos recurrir a una de las siguientes técnicas. En primer lugar, podemos poner una contraseña a la BIOS UEFI del PC para evitar que nadie, sin la contraseña, pueda iniciar sesión. Pero esta contraseña se puede borrar relativamente fácil quitando la pila de la placa base.

Por ello, otra forma más segura de evitar que nadie use nuestro Linux ni nos pueda restablecer la contraseña es aplicar un cifrado al disco. Sin la contraseña de cifrado, los datos serán totalmente inaccesibles, y nadie podrá hacer ni siquiera desde una Live. Eso sí, si olvidamos nosotros la contraseña debemos saber que no podremos volver a entrar al PC, y no nos quedará otra que formatear.

Protege Linux si tienes Dual Boot

Otra forma de la que pueden tomar el control de nuestro Linux es desde otro sistema operativo. Aunque tengamos nuestra distro correctamente configurada para evitar que nada ni nadie pueda entrar a ella sin permiso, siempre está la opción de entrar por otro lado. Por ejemplo, pueden extraer el disco duro del PC y montarlo en otro PC, o, si tenemos Dual Boot, acceder a él desde el otro sistema operativo, ya sea Windows o Linux.

Por muchos permisos que configuremos, si la otra persona intenta entrar en los datos de Linux desde Windows (usando WSL, o un programa para leer EXT), podrá hacerlo sin prácticamente problemas. No hay forma sencilla de protegernos en este sentido. Una vez dentro, podría modificar el fichero passwd y conseguir una cuenta de superusuario en Linux.

Por tanto, si realmente queremos proteger nuestros datos y nuestro disco duro, y evitar que nada ni nadie pueda tomar el control de dicha cuenta, lo único que nos queda por hacer es recurrir a técnicas de cifrado. De esta manera, sin la clave, no podrá acceder al disco duro.