La pregunta
¿Cómo solicitar a un usuario que cambie su contraseña la próxima vez que inicie sesión? Se debe obligar al usuario a cambiar la contraseña por primera vez solo después de que se haya restablecido la contraseña.
1. Usando el comando de cambio
Esto se puede hacer usando el comando chage con -d opción. Según la página man de chage:
# man chage .... -d, --lastday LAST_DAY Set the number of days since January 1st, 1970 when the password was last changed. The date may also be expressed in the format YYYY-MM-DD (or the format more commonly used in your area). If the LAST_DAY is set to 0 the user is forced to change his password on the next log on. ...
Para establecer la fecha del último cambio de contraseña del usuario en 0, utilice el siguiente comando:
# chage -d 0 [username]
Por ejemplo, para establecer la fecha del último cambio de contraseña del usuario (usuario de prueba) en 0 con el comando chage:
# chage -d 0 testuser
2. Usando el comando contraseña
Otra forma de obligar al usuario a cambiar la contraseña es usar el comando passwd con -e opción. La opción -e caduca la contraseña de usuario actual, lo que obliga al usuario a establecer una nueva en el próximo inicio de sesión. Desde la página man del comando passwd:
-e This is a quick way to expire a password for an account. The user will be forced to change the password during the next login attempt. Available to root only.
Para hacer caducar la contraseña actual y obligar al usuario a establecer una nueva contraseña, use el siguiente comando:
# passwd -e [username]
Si el usuario no recuerda su contraseña anterior, proporcióneles una contraseña temporal con passwd antes de ejecutar el comando anterior.
Verificar
La próxima vez que el usuario se autentique (con su contraseña anterior), se verá obligado a ingresar una nueva contraseña.
# ssh testuser@localhost testuser@localhost's password: You are required to change your password immediately (root enforced) WARNING: Your password has expired. You must change your password now and login again! Changing password for user testuser. Changing password for testuser. (current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully. Connection to localhost closed.
Para verificar si la contraseña actual ha caducado o no, use el comando cambiar .
# chage -l [username]