passwd: todo lo que debes saber

Un tutorial para poder utilizar el comando passwd que puede ayudar a las personas que recién llegan a UNIX.

El post en el que explicaba cómo recuperar la contraseña de Debian me dio la idea de profundizar más en el funcionamiento del comando passwd, ya que tiene varias formas de operar según cómo se llame a este comando.

passwd sirve para cambiar la contraseña de una cuenta. Si ejecutas el comando normal en tu terminal, por ejemplo, passwd, bajo tu propia cuenta de usuario solo podrás cambiar tu propia contraseña. Sin embargo, el auténtico poder de este comando está en invocarlo como superusuario (es decir, como root). Cuando la cuenta root ejecuta este comando, puede cambiar cualquier contraseña: la suya o la de otra cuenta.

Cuando invoques passwd con una cuenta normal, lo primero que hará es pedirte la contraseña actual, y así lo veremos cuando dice Current password. Aquí tenemos que meter la contraseña que tenemos ahora mismo. Esto es una medida de precaución para asegurarse de que un script automatizado no trata de cambiar nuestra contraseña sin permiso.

Ten en cuenta que cuando escribas una contraseña, no la verás por pantalla. Igual que pasa con el comando sudo, no habrá feedback. Ni si quiera unos asteriscos. Cuando empieces a escribir la contraseña, hazlo con determinación y no te detengas a medio de teclearla, para no cometer errores.

Después de escribir la contraseña actual y pulsar Enter, el sistema nos preguntará por la contraseña nueva que queramos establecer. En total la tendremos que escribir dos veces, porque nos pedirá confirmación. Así, si la hemos escrito mal, nos avisará para no bloquear nuestro sistema.

$ passwd
Current password:
New password:
Retype new password:
passwd: password updated successfully

Sobre esto, varias notas extra:

  • La configuración del sistema operativo podría traer reglas adicionales que pueden impedir que se guarde la contraseña. Por ejemplo, es posible que rechace cambiar la contraseña si no tiene un número mínimo de caracteres, o incluso si no junta alguna mayúscula o dígito.
  • Es posible que si pones la misma contraseña como nueva contraseña, te lo rechace y te diga que es la misma contraseña de todos modos.

Por último, el auténtico poder de este comando está en lanzarlo como root. Si lo hacemos podremos cambiar la contraseña de cualquier usuario si lo especificamos como parámetro al lanzar el comando. En este caso, de hecho, passwd no preguntará por la contraseña, lo que le convierte también en el comando ideal para usar si tenemos que recuperar una contraseña en concreto:

# passwd ana
New password:
Retype new password:
passwd: password updated successfully

Recuperar la contraseña de superusuario de Debian 11

¿Te has olvidado de la contraseña que le diste a la cuenta de root en tu instalación de Debian? Suele pasar si no la usamos con mucha frecuencia. Te cuento cómo usar el modo rescate para reestablecerla.

Cuando se configura Debian, una de las primeras cosas que pregunta el sistema operativo es qué contraseña le pretendemos dar a la cuenta de superusuario, es decir, a la cuenta root. Otras distribuciones GNU/Linux han decidido restringir el uso de la cuenta root y facilitar que la distribución se instale teniendo una cuenta superusuario como primera cuenta. No es el caso de Debian, que sigue dándole mucha importancia a la cuenta de superusuario root, y que ni siquiera configura por defecto sudo en la cuenta principal cuando se instala el sistema.

Sin embargo, ¿qué hacer cuando no hemos utilizado en una larga temporada esa cuenta y nos hemos olvidado de su contraseña? ¿Cómo podemos reestablecer la contraseña de root en Debian 11? Vamos a ver qué opciones tenemos en este post.

El juego de ejecutar passwd como root

El objetivo es conseguir tener acceso a una shell root desde la que podamos ejecutar passwd. Este es un comando interesante de administración de sistemas UNIX que sirve para cambiar una contraseña. Cuando lo ejecutamos como root, nos permite cambiar la contraseña de cualquier cuenta del sistema.

Si ponemos passwd sin más cuando somos root, cambiaremos la contraseña de root. Tan fácil como esto. De modo que el objetivo de este juego será conseguir una shell de root con la que hacer el cambio de contraseña.

El caso más simple es si ya tienes montado sudo en tu ordenador. Si tu cuenta personal está configurada para poder utilizar sudo, no tienes que hacer nada más que ejecutar sudo su. Con esto, utilizarás tu propia contraseña para acceder a una shell de root.

workstation ~ $ sudo su -
[sudo] contraseña para dani: 
[root@workstation ~]# passwd
Nueva contraseña:

Sólo recuerda que:

  • Cuando teclees la contraseña, esta no será visible por pantalla, así que teclea con confianza y sin detenerte. Con esto evitarás problemas si estás escribiendo palabras y no te equivocarás.
  • Tendrás que escribir la contraseña dos veces y tiene que coincidir. Si la has escrito mal alguna de las veces, te avisará y tendrás que volver a empezar.

Entrar en modo rescate

Si no tienes montado sudo, doas ni nada parecido (cosa que deberías), no quedará otra que entrar en modo de rescate. Resulta sorprendente lo fácil que es arrancar GNU/Linux en modo rescate saltándose cualquier medida de protección, pero si el disco no está cifrado, técnicamente no hay nada que impida hacer esto.

Para entrar en un modo rescate que nos permita saltar la contraseña, todo lo que haremos será reiniciar el ordenador y pulsar e cuando estemos en la pantalla de elección de entorno.

Pantalla de GRUB en Debian 11.

Al pulsar la tecla e aparece el editor de arranque. Con esto podemos modificar los comandos que se ejecutan por GRUB para arrancar el sistema operativo. Por dar la nota, cuando seleccionamos una opción premarcada como Debian GNU/Linux en GRUB realmente ejecutamos todas las instrucciones que se están viendo ahí.

Todo lo que haremos ahora será desplazarnos hacia la línea que empieza por linux (la que empieza por linux /boot/vmlinuz...). Nos desplazamos al final de la línea (aquí puedes usar Ctrl + E para ir rápidamente al final de la línea). Después, borramos las últimas palabras (ro quiet) y en su lugar pondremos rw init=/bin/bash. En definitiva, la línea de linux tiene que quedar tal que así:

    linux    /boot/vmlinuz-5.10.0-19-amd64 root=UUID=... rw init=/bin/bash

Ten en cuenta que la versión del kernel que acompaña a vmlinuz puede cambiar. Además, he suprimido el UUID completo de mi disco porque será diferente al tuyo. Una vez lo hayas comprobado, pulsa Ctrl-X o F10 para arrancar el sistema.

linux /boot/vmlinuz-5.10.0-19-amd64 root=UUID rw init=/bin/bash
El aspecto de GRUB para arrancar en modo rescate

Cuando termine de cargar, verás una shell. Esta shell está conectada al disco duro, por lo que con esto ya tenemos una sesión root para poder ejecutar algunos comandos. Deberías poder comprobar que el disco duro está montado en modo escritura. Esto es algo que puedes hacer ejecutando el comando mount y comprobando si en la salida se incluye una línea que contenga tu partición y la raíz (/). En los flags de montaje debe salir la opción rw. Por ejemplo, en mi caso veo:

/dev/vda1 on / type ext4 (rw,relatime)

Esto es suficiente de por sí.

Como puedes ver en tu shell, root@(none) implicará que tenemos una shell de root. Con esto ya podemos ejecutar el comando passwd y establecer una nueva contraseña para la cuenta de superusuario:

root@(none):/# passwd
New password:
Retype new password:
passwd: password updated successfully
root@(none):/#

Una vez que hagas esto, reinicia tu ordenador. Posiblemente a la fuerza si tienes problemas para escribir reboot. Deberías comprobar que si ahora tratas de escribir la contraseña de superusuario (por ejemplo, usando el comando su), ya te la aceptará.

Cómo recupero la contraseña de Ubuntu

¿Qué hacer cuando no se puede iniciar sesión en Ubuntu porque hemos olvidado la contraseña y no hay más cuentas de usuario en el sistema?

Es posible, si tienes una máquina virtual que no sueles usar a menudo, o si tu ordenador tiene dual boot y no pasas mucho tiempo en Ubuntu, que se te pueda olvidar la contraseña que estableciste cuando instalaste el sistema operativo. O bien, por la razón que sea. Existen muchísimas razones por las que se puede perder la contraseña de instalación. ¿Qué hacemos en caso de que no podamos entrar en nuestra instalación de Ubuntu?

Los supuestos

En este post os voy a contar una forma rápida y efectiva de recuperar la contraseña de Ubuntu. No digo que sea la forma definitiva y puede que haya casos donde no funcione.

Por ejemplo, si tu partición está cifrada con LUKS, este consejo no te vale. Es más, ningún consejo te vale. Si los datos de tu disco duro están cifrados y no recuerdas la contraseña, no existe forma de recuperar el acceso, ni siquiera la información contenida en el disco.

Sin embargo, estas instrucciones os pueden echar una mano si habéis hecho una instalación típica de Ubuntu para sobremesas o para máquinas virtuales.

Cambiando la contraseña desde el modo de recuperación

Esta forma de cambiar una contraseña olvidada es tan simple que parece sorprendente que siga funcionando a día de hoy. Pero no nos vamos a centrar hoy en si es excesivamente inseguro y simplemente vamos a aprovechar en nuestro beneficio el hecho de que desde el modo de recuperación de Ubuntu es posible acceder a una shell del sistema operativo, con la que podremos cambiar la contraseña via el comando passwd.

Todo lo que tienes que hacer es arrancar tu máquina de tal forma que salga el menú GRUB. Si Ubuntu es el único sistema operativo de tu ordenador o máquina virtual, es posible que el menú GRUB se salte y se inicie Ubuntu automáticamente. En este caso, GRUB estará configurado para solamente mostrar el menú si no se pudo arrancar de forma segura por última vez. En este caso, reinicia a la fuerza tu ordenador, para que en el segundo arranque salga el menú.

El cargador de arranque de GRUB, versión 2.06.

Ahora lo que tendremos que hacer es pulsar la tecla Abajo para desplazarnos hacia la opción Advanced options for Ubuntu, y pulsar Enter para abrir el submenú. Dentro de este, utilizaremos las teclas de dirección para seleccionar alguna opción de recuperación (por ejemplo, que termine en recovery mode).

Menú de opciones avanzadas de GRUB

Una vez la tengamos seleccionada, pulsamos Enter y dejamos que arranque el ordenador. En este estado, se iniciará una versión diferente de Ubuntu. En vez de entorno gráfico, se cargará un menú de color donde nos presentarán varias opciones de arranque. Tendremos que usar las teclas de dirección para seleccionar la opción root (consola de superusuario), y pulsaremos Enter para confirmar. Después, pulsaremos Enter una segunda vez para entrar en modo mantenimiento cuando pida la confirmación.

Menú de recuperación de Ubuntu entrando en modo consola de superusuario

En la mayoría de instalaciones recientes de Ubuntu, la partición directamente se montará en modo de lectura y escritura. En otras palabras, con este método hemos ganado acceso a una shell de superusuario en el sistema operativo. ¡Tremendo!

Sin embargo, ahora tenemos la posibilidad de cambiar la contraseña utilizando el comando passwd, que tendremos que invocar especificando la cuenta cuya contraseña querramos cambiar. Por ejemplo, para cambiar la contraseña de una cuenta llamada operator, utilizaremos el siguiente comando:

root@ubuntu22:~# passwd operator
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente

Si tecleáis una contraseña de menos de 8 caracteres es posible que salga un mensaje como CONTRASEÑA INCORRECTA: La contraseña tiene menos de 8 caracteres. Sin embargo, este mensaje es solo un aviso, porque la establecerá igualmente. Contraseñas más largas son más seguras y previenen accesos no autorizados al ordenador.

Hecho eso, salimos de la shell utilizando la combinación de teclas Control-D. Esto nos llevará de vuelta al menú de color, donde tendremos que elegir la opción resume (Continuar con el arranque normal), lo que nos iniciará el ordenador en modo completo, cargando el entorno gráfico.