Cualquier administrador de sistemas en algún momento se ve obligado a suspender el acceso de un usuario a un sistema dado, siendo uno de los motivos principales la seguridad o el incumplimiento de las normas. En sistemas GNU/Linux es posible bloquear el acceso a un usuario con cuenta en el sistema sin permitirle poder iniciar sesión mediante el bloqueo de su contraseña. Esto es; al bloquear su contraseña el usuario no podrá utilizarla ni cambiarla hasta que un administrador se la desbloquee.
Para ilustrar un ejemplo se ha recurrido a la distribución GNU/Linux universal, es decir: Debian. Se creó previamente un usuario con adduser con nombre ingenieroinformatico. Se procede a bloquearlo:
admin@debian:~$ sudo passwd -l ingenieroinformatico passwd: información de caducidad de la contraseña cambiada.
Si el usuario bloqueado intenta iniciar sesión (en este ejemplo por SSH), por más que introduzca correctamente su contraseña no consigue logearse:
login as: ingenieroinformatico ingenieroinformatico@debian.ejemplo.net's password: Access denied
En caso de querer desbloquear la contraseña del usuario:
admin@debian:~$ sudo passwd -u ingenieroinformatico passwd: información de caducidad de la contraseña cambiada.
Si el usuario inicia sesión en un terminal ahora le reconocerá la contraseña que tenía como correcta:
login as: ingenieroinformatico ingenieroinformatico@debian.ejemplo.net's password: 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. ingenieroinformatico@debian:~$
¿Y que pasaría si el usuario tiene sesión iniciada ya en el sistema cuando se bloquea su contraseña? Veamos…
admin@debian:~$ users ingenieroinformatico admin
El usuario ingenieroinformatico ha iniciado sesión y procedemos a bloquearle la contraseña:
admin@debian:~$ sudo passwd -l ingenieroinformatico passwd: información de caducidad de la contraseña cambiada. admin@debian:~$ users ingenieroinformatico admin
Como se puede observar, el mecanismo de bloqueo actúa únicamente sobre el mecanismo de autenticación, por lo que si el usuario continúa sin cerrar sesión (por ejemplo, a través de un cliente SSH) podrá hacer lo que le plazca en base a los permisos de que disponga siempre y cuando no le sea solicitada su contraseña de nuevo. Para evitarlo, se cerrará la sesión SSH del mismo tras bloquearlo (se puede usar pkill si el usuario está en local y el administrador en remoto):
admin@debian:~$ ps aux | grep ssh | grep ingenieroinformatico admin 16885 0.0 0.3 71248 3428 ? Ss 11:54 0:00 sshd: ingenieroinformatico [priv] 1001 16887 0.0 0.1 71248 1752 ? S 11:54 0:00 sshd: ingenieroinformatico@pts/1 admin 17411 0.0 0.0 9432 864 pts/0 S+ 12:17 0:00 grep ssh admin@debian:~$ kill -9 16887
El bloqueo de contraseñas es útil sobre todo como bloqueo temporal ya que únicamente deniega el acceso, pudiéndose revertir de forma sencilla el proceso y sin afectar a la información que el usuario posea almacenada en el sistema, ya que únicamente actúa sobre la línea del usuario bloqueado del fichero /etc/shadow.