Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Cómo manejar las contraseñas de usuarios en GNU/Linux

⋆ Cómo manejar las contraseñas de usuarios en GNU/Linux

(Tiempo estimado: 9 - 17 minutos)

Cambiar las contraseñas de los usuarios de GNU/Linux es muy sencillo. Podemos bloquear, desbloquear usuarios e incluso manejar tiempos de expiración y políticas de cambio de contraseñas basadas en el tiempo. No es habitual -para un usuario normal- usarlas todas, pero es útil conocerlas y saber que existen por si son necesarias en un futuro.

Seguid leyendo y os enseñaré a cambiar la contraseña de cualquier usuario en GNU/Linux...

 

 

¿QUÉ ES UNA CONTRASEÑA?

Una contraseña o clave es una forma de autentificación que utiliza información secreta para controlar el acceso hacia algún recurso. La contraseña debe mantenerse en secreto ante aquellos a quien no se les permite el acceso. A aquellos que desean acceder a la información se les solicita una clave; si conocen o no conocen la contraseña, se concede se niega el acceso a la información según sea el caso.

 

 

Gestionar contraseñas de usuarios en GNU/Linux es muy sencillo

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con GNU/Linux (cualquiera)

 

 

2.- CONCEPTOS BÁSICOS

En GNU/Linux hay muchísimos ficheros, pero posiblemente dos de los ficheros más importantes son los ficheros encargados de manejar los usuarios y sus contraseñas. Son ficheros críticos, por tanto, salvo un caso excepcional no debemos editarlos con programas editores que tengan escritura. Si los ficheros se corrompen, es posible que no podamos volver a hacer login de forma normal.

/etc/passwd es posiblemente el fichero mas importante. En él, se guardan los usuarios del sistema. Por ejemplo, buscamos el usuario manuel dentro del fichero:

raul@DEBIAN:~$ sudo cat /etc/passwd | grep manuel
manuel:x:1001:1001:,,,:/home/manuel:/bin/bash

 

 

La estructura del fichero /etc/passwd es la siguiente: <nombre>,<password><uid>, <gid>,<descripción opcional> <carpeta>, <shell>, donde:

  • <nombre> Nombre del usuario, no se admiten números al comienzo del nombre.
  • <password> Una «x» nos indica que la contraseña está almacenada en fichero /etc/shadow. Si aparece una «!» significa que el usuario está bloqueado y si tiene «!!» es que no tiene contraseña.
  • <uid> Cada usuario lleva un número de identificador de usuario (uid) entre el 0 (root) y 65535. Se reservan algunos uid como por ejemplo para root (el 0 siempre) y también para usuarios de servicios varios del sistema.
  • <gid> Cada usuario tiene un id de grupo principal, pero puede pertenecer a más grupos.
  • <home> Directorio home del usuario. Al iniciar sesión será su directorio principal de trabajo.
  • <shell> Shell que usará el usuario para ejecutar comandos. Algunos servicios y usuarios no necesitan shell y se les configura una shell sin acceso como /usr/bin/nologin o /bin/false.

 

 

/etc/shadow es el fichero en el que se almacenan las contraseñas cifradas y muestra da información sobre caducidad y validez de la cuenta del usuario. Por ejemplo, si buscamos el usuario manuel dentro del fichero:

raul@DEBIAN:~$ sudo cat /etc/shadow | grep manuel
manuel:$6$fH2lJqUMVi7gpivv$ldlzVHTP8DjFbw/Uhzp89H45D1J3uNdXP0Pr4FUvy7Gm.aGxx0halucCL0fVvn8VfziOFtdwBKCEcSzqcO4kF.:18673:90:1:7:::

 

 

La estructura del fichero /etc/shadow es la siguiente: <nombre><password cifrado><1><2><3><4><5><6>, donde:

  • <nombre> Nombre del usuario.
  • <password cifrado> Contraseña cifrada
  • <1> Días transcurridos desde 1-1-1970 desde que la contraseña fue cambiada por última vez.
  • <2> El mínimo número de días entre cambios de contraseña.
  • <3> Días máximos de validez de la cuenta de usuario.
  • <4> Días que avisa antes de caducar la contraseña.
  • <5> Días después de que un contraseña caduque para deshabilitar la cuenta
  • <6> Fecha de caducidad. días desde 1-1-1970, donde la cuenta es deshabilitada y el usuario no podrá iniciar sesión

 

 

3.- CAMBIAR LA PROPIA PROPIA CONTRASEÑA

Para cambiar nuestra propia contraseña en un sistema GNU/Linux, tan solo deberemos ejecutar el siguiente comando, el cual nos pedirá nuestra contraseña actual y dos veces la nueva contraseña:

raul@DEBIAN:~$ passwd
Changing password for raul.
Current password:
New password:
Retype new password:
passwd: password updated successfully

 

 

 

 

4.- CAMBIAR LA CONTRASEÑA DE OTRO USUARIO

Para cambiar la contraseña de otro usuario del sistema, deberemos hacerlo desde la cuenta de root o desde un usuario con privilegios de sudo. Para cambiar la contraseña del usuario manual desde un usuario con privilegios de sudo, ejecutaremos lo siguiente:

raul@DEBIAN:~$ sudo passwd manuel
New password:
Retype new password:
passwd: password updated successfully

 

 

5.- BLOQUEAR Y DESBLOQUEAR UNA CONTRASEÑA

Las contraseñas de los usuarios pueden ser bloqueadas para que no puedan hacer login ó desbloqueadas para que puedan hacer login. Por ejemplo, para bloquear la contraseña del usuario manuel y que no pueda entrar ejecutaremos lo siguiente:

raul@DEBIAN:~$ sudo passwd -l manuel
passwd: password expiry information changed.

 

 

Ahora, si por ejemplo el usuario manuel intenta entrar, vemos que no le deja aunque lo intente varias veces:

raul@DEBIAN:~$ ssh manuel@localhost
manuel@localhost's password:
Permission denied, please try again.
manuel@localhost's password:
Permission denied, please try again.
manuel@localhost's password:
manuel@localhost: Permission denied (publickey,password).

 

 

Para desbloquear la contraseña del usuario ejecutaremos lo siguiente:

raul@DEBIAN:~$ sudo passwd -u manuel
passwd: password expiry information changed.

 

 

Ahora, si volvemos a intentar entrar por ssh con el usuario manuel, veremos que ya deja acceder:

raul@DEBIAN:~$ ssh manuel@localhost
manuel@localhost's password:
Linux DEBIAN 4.19.0-13-cloud-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 15 15:04:52 2021 from ::1
manuel@DEBIAN:~$

 

 

6.- FORZAR EL CAMBIO DE CONTRASEÑA DE UN USUARIO

Existen ocasiones en las que crearemos un usuario con una contraseña "temporal" y queramos que el usuario la cambie en su primera conexión. Para ello, una vez creado el usuario con una contraseña temporal, introduciremos el siguiente comando:

raul@DEBIAN:~$ sudo passwd -e manuel
passwd: password expiry information changed.

 

 

Cuando el usuario vaya a entrar con la contraseña temporal que le hemos entregado, tendrá que cambiar obligatoriamente su contraseña:

raul@DEBIAN:~$ ssh manuel@localhost
manuel@localhost's password:
Linux DEBIAN 4.19.0-13-cloud-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 15 16:18:14 2021 from ::1
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for manuel.
Current password:
New password:
Retype new password:
passwd: password updated successfully
Connection to localhost closed.

 

 

Una vez cambiada la contraseña, el servidor remoto nos desconecta y a partir de ahora el usuario deberá hacer login con la nueva contraseña:

manuel@localhost's password: 
Linux DEBIAN 4.19.0-13-cloud-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 15 16:18:38 2021 from ::1
manuel@DEBIAN:~$

 

 

7.- CONFIGURAR TIEMPOS DE EXPIRACIÓN Y CAMBIO DE CONTRASEÑA

Existen 3 tipos de tiempo de expiración para las contraseñas de los usuarios de GNU/Linux. Si queremos configurar el mínimo de días hasta que el usuario pueda cambiar su contraseña, ejecutaremos el siguiente comando con el número de días que deben pasar hasta que el usuario pueda cambiar su contraseña:

raul@DEBIAN:~$ sudo passwd -n 90 manuel
passwd: password expiry information changed.

 

 

Si el usuario intenta cambiar su contraseña, al no haber llegado e mínimo de 90 días en este ejemplo, no podrá cambiar su contraseña:

manuel@DEBIAN:~$ passwd 
Changing password for manuel.
Current password:
You must wait longer to change your password
passwd: Authentication token manipulation error
passwd: password unchanged

 

 

Si queremos lanzar un aviso para que el usuario cambie su contraseña fijado un máximo de días, ejecutaremos, por ejemplo:

raul@DEBIAN:~$ sudo passwd -w 5 manuel
passwd: password expiry information changed.

 

 

Si el usuario hace login, verá que le queda 1 día para cambiar su contraseña o expirará:

raul@DEBIAN:~$ ssh manuel@localhost
manuel@localhost's password:
Warning: your password will expire in 5 days
Linux DEBIAN 4.19.0-13-cloud-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 15 18:57:56 2021 from ::1
manuel@DEBIAN:~$

 

 

Si queremos fijar el máximo de días que se puede estar sin cambiar la contraseña, pasado esos días la contraseña hay que cambiarla. Ejecutaremos, por ejemplo:

raul@DEBIAN:~$ sudo passwd -x 120 manuel
passwd: password expiry information changed.

 

 

8.- COMPROBAR ESTADO DE UNA CONTRASEÑA

Para comprobar el estado de la contraseña de un usuario ejecutaremos passwd con la opción de -S:

raul@debian:~$ sudo passwd -S manuel
manuel P 02/15/2021 90 1 7 -1

 

 

Donde la salida se divida en 7 campos:

El primer campo corresponde con el nombre del usuario. El segundo campo indica si el usuario tiene la contraseña bloqueda (L), si no tiene contraseña (NP) o si está activa y funcionando correctamente (P). El tercer campo es la fecha del último cambio de la contraseña. Los siguientes 4 campos se corresponden con: periodo mínimo de cambio, periodo máximo de cambio, periodo de aviso e inactividad de la contraseña.

  

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

Código de seguridad
Refescar