¿No puedes acceder a Linux? Recupera la contraseña de root

¿No puedes acceder a Linux? Recupera 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, ya que dependiendo de lo que queramos hacer, tenemos que utilizar unos u otros. En Windows, únicamente tenemos que utilizar los permisos de Administrador para poder realizar cambios en el equipo.

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 los 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.

Motivos por los que no podemos acceder a Linux

Uno de más comunes, como hemos explicado, es la pérdida de la contraseña. Esto ocurre a menudo si hemos configurado en nuestro ordenador una contraseña larga y compleja (bien hecho), pero hemos activado el inicio de sesión automático (mal hecho). Al no tener que introducirla todos los días, al final esta contraseña se acaba perdiendo. Y, por tanto, nos quedamos sin poder acceder a nuestro ordenador.

También puede ocurrir que hayamos creado varios usuarios, y que los que usamos a menudo sean usuarios con permisos limitados. Al estar acostumbrados a ellos, es posible terminar por olvidar la contraseña de root, o del usuario al que le hayamos dado más permisos. Y, de nuevo, nos quedaremos sin poder acceder a nuestro PC.

Por último, también puede ocurrir que el fichero de contraseñas se haya corrompido por algún motivo. Al estar este fichero corrupto, nos quedamos sin poder acceder a nuestras cuentas de usuario y, por lo tanto, tendremos que encontrar la forma de autenticarnos para poder volver a usar el PC. Todos estos problemas los encontramos debido al gran número de distribuciones Linux disponibles en el mercado, distribuciones detrás de las cuales no se encuentra ninguna gran empresa, como es el caso de Microsoft en Windows o de Apple en macOS. Si perdemos la contraseña o no la recordamos, podemos recuperarla fácilmente. Sin embargo, en Linux, no una empresa que nos permite recuperar la contraseña de forma rápida y sencilla.

Sea por el motivo que sea, a continuación, os explicamos cómo solucionarlo.

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.

Usar Arch Linux

Si estamos usando Arch Linux, el proceso para la recuperación de la contraseña de superusuario, o root, en esta distro es diferente. Incluso, si tenemos conocimientos ya dentro de este sistema, incluso podríamos decir que más rápida y sencilla. Esta es la distribución Linux más utilizada por expertos en seguridad (incluidos hackers) por el gran número de funciones que incluye en cuanto a seguridad de todo tipo de tipo.

Con un Live-CD

Si tenemos un Live-CD a mano, lo primero que haremos será arrancar el PC con él. Y, una vez que estemos en el TTY, montaremos la partición «root» de nuestro sistema principal, el que no podemos arrancar.

Una vez montada, lo que haremos será ejecutar el siguiente comando:

passwd --root PUNTO_MONTAJE NOMBRE_USUARIO

Seguimos los pasos que nos aparecerán en la pantalla. Una vez cambiada la contraseña, simplemente desmontamos la partición de root del sistema, reiniciamos el PC, y ya podremos entrar a él con la nueva contraseña que le hayamos establecido.

Como init

Lo que debemos hacer es arrancar el sistema usando el parámetro «init=/bin/bash» en el Kernel. Cuando arranca Arch, el sistema de archivos de root estará montado como «solo lectura». Le cambiamos los permisos para montarlo como «lectura/escritura» ejecutando el comando:

mount -n -o remount,rw /

Una vez montado, usaremos el comando «passwd» para crear una nueva contraseña para el usuario root. Tras cambiarla, simplemente ejecutamos «reboot -f» para reiniciar, y listo.

Desde SUDO

Si tenemos instalado SUDO, y configurados los permisos de grupo correctamente, podremos cambiar la contraseña de root de nuestra distro Arch Linux ejecutando simplemente el siguiente comando:

sudo passwd root

Qué pasa si otros consiguen la contraseña

Como podemos ver, el proceso para recuperar la contraseña de superusuario de Linux es relativamente sencillo, y cualquiera que ya tenga algo de experiencia dentro de este ecosistema podrá seguir los pasos descritos. Es más, incluso aunque usemos otras distros diferentes de Ubuntu, el proceso para conseguir la cuenta de root del sistema va a ser muy similar, por no decir idéntico.

Esto es muy útil si nos hemos olvidado de la contraseña, o hemos perdido el papel donde la teníamos apuntada. Pero ¿qué pasa si otros utilizan esta posibilidad con malas intenciones? Si usamos Linux, y una persona quiere acceder a nuestro ordenador, puede recurrir a estos pasos para robar, o cambiar, la contraseña de superusuario de nuestro equipo y poder así tomar el control completo del equipo. Con esta contraseña, cualquier persona tendrá control absoluto sobre el ordenador, y podrá hacer con él lo que quiera. Es por ello por lo que los piratas informáticos suelen atacar las cuentas de root, ya que es una «apuesta de éxito segura».

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 ya que es la encargada de mantener tanto la hora como todos los datos de configuración de la placa, independientemente del sistema operativo que lo gestione, ya esa Windows o cualquier distribución Linux.

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.

Para evitar este tipo de problemas, en lugar de cifrar el disco donde vamos a instalar Linux, es recomendable crear una partición donde vayamos almacenar todos los datos y cifrarla. De esta forma, si olvidamos la contraseña de cifrado, únicamente nos vamos a tener que preocupar por volver a formatear esa partición, no todo el equipo para volver a instalar la distribución Linux que queremos utilizar. Además, en estos casos, es más que recomendable hacer todos los días una copia de seguridad de todos los datos almacenados en su interior para que, en caso de olvidarla contraseña de cifrado, no perdamos todo el contenido almacenado en su interior. Cifrando el disco duro, nos veremos obligados a introducir la contraseña todos los días cada vez que queramos acceder a la unidad, por lo que es poco probable que se nos olvide, algo bastante habitual si la utilizamos de forma poco frecuente la contraseña.

Para hacer copias de seguridad incrementales en Linux, podemos utilizar rsync, disponible en la mayoría de las distribuciones Linux actuales. El funcionamiento de este comando es tan fácil como acompañarlo de la ruta donde se encuentran los archivos que queremos copiar y la ruta donde se realizará la copia de seguridad. Además, podemos utilizar una serie de parámetros para conservar los permisos, incluir todos los subdirectorios, eliminar los archivos de origen entre otras muchas. También podemos utilizar Crontab y programar para que las copias de seguridad se han todos los días a una determinada hora, cuando sabemos que estamos a punto de dejar de trabajar con nuestro equipo.

rsync -parámetros ruta-origen ruta-destino

De nada sirve hacer una copia de seguridad de todos los datos almacenados en la unidad Linux cifrada y dejar la copia de seguridad junto al ordenador sin ningún tipo de protección. Existe la posibilidad de cifrar la unidad donde vamos a hacer la copia de seguridad, pero, si hemos olvidado la primera, lo más probable es que también olvidemos la segunda, por lo que hacer la copia de seguridad en un disco duro cifrado de poco nos a servir. En este caso, lo mejor que podemos hacer es subir todos los archivos a una plataforma de almacenamiento en la nube o bien utilizar una de estas que ofrezca aplicación para Linux, como es el caso de MEGA, plataforma de almacenamiento que nos ofrece 20 GB de espacio totalmente gratuito y que, a diferencia de Google Drive y OneDrive, si ofrece una aplicación para Linux que nos permite sincronizar al instante todos los cambios que hagamos en los archivos almacenados en nuestro equipo.

Desactivar la cuenta de superusuario

Si no necesitamos esta cuenta, podemos desactivarla fácilmente en cualquier distro Linux usando el comando «passwd» que, seguramente, ya conozcamos. Para ello, no tenemos más que abrir un terminal y ejecutar en él el siguiente comando:

sudo passwd -l root

Esto hará que la contraseña de root quede deshabilitada y no se podrá iniciar sesión con este superusuario hasta que se configure una nueva contraseña. Si el comando passwd no funciona, por el motivo que sea, tenemos otra alternativa de conseguir lo mismo usando el comando «usermod».

sudo usermod -L root

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 discos duros con el sistema de archivos 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. En este caso, la única solución sería cifrar el disco duro o, mejor, la partición donde se almacenan los archivos con los que trabajamos habitualmente como hemos comentado más arriba.

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. Pero claro, si perdemos la clave, nos vamos a encontrar con el mismo problema.

Configurar caducidad de contraseña

Otra medida de seguridad muy importante a la hora de proteger un sistema operativo es configurar una fecha de caducidad para la contraseña. De esta forma, lo que conseguimos es que, llegado cierto umbral de tiempo, el usuario en cuestión tenga que cambiar, obligatoriamente, la contraseña para seguir usando el PC.

Para ello, no tenemos más que usar el parámetro «-x» junto al comando «passwd» para especificar el número, en días, que queremos que tenga como validez la contraseña. De esta forma, podemos ejecutar el siguiente comando para forzar que la contraseña de «root» tenga que cambiarse obligatoriamente a los 30 días:

passwd -x 30 root

Adicionalmente, si queremos, podemos usar el parámetro «-w» para elegir el número de días antes del cambio de contraseña cuando queremos que nos avise el sistema. De esta forma, usando «-w 7» empezaremos a ver un aviso 7 días antes de que el cambio sea obligatorio, y podremos, si queremos, adelantarnos a él. O, al menos, ir pensando en la nueva contraseña que vamos a usar.

Cómo elegir una contraseña segura

El mejor método para elegir una contraseña segura no va necesariamente asociado a aporrear el teclado y que salga los números y letras de forma aleatoria. Podemos utilizar alguna de las diferentes aplicaciones disponibles para generar contraseñas de forma aleatoria, contraseñas que, además, vamos a poder almacenar en este tipo de aplicaciones para tenerlas siempre a mano.

Es recomendable utilizar una plataforma de este tipo que incluya una versión para dispositivos móviles, ya que nos permitirá conocer la contraseña de nuestro sistema rápidamente sin tener que apuntarla en un papel y dejarla a la vista de personas que no deberían acceder a nuestro equipo bajo ninguna circunstancia, especialmente en el ámbito laboral. Algunas de estas plataformas, también incluyen una extensión para navegadores, extensión que únicamente nos mostrará las contraseñas si introducimos la palabra clave que protege el contenedor donde se encuentran almacenadas.

2 Comentarios