La demande
Comment obliger un utilisateur à changer son mot de passe lors de sa prochaine connexion ? L'utilisateur doit être forcé de changer le mot de passe pour la première fois seulement après que le mot de passe a été réinitialisé.
1. Utilisation de la commande chage
Cela peut être fait en utilisant la commande chage avec -d option. Selon la page de manuel 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. ...
Pour définir la date du dernier changement de mot de passe de l'utilisateur à 0, utilisez la commande ci-dessous :
# chage -d 0 [username]
Par exemple, pour définir la date du dernier changement de mot de passe de l'utilisateur (testuser) sur 0 avec la commande chage :
# chage -d 0 testuser
2. Utilisation de la commande passwd
Une autre façon de forcer l'utilisateur à changer de mot de passe consiste à utiliser la commande passwd avec -e option. L'option -e fait expirer le mot de passe de l'utilisateur actuel, forçant l'utilisateur à en définir un nouveau lors de la prochaine connexion. À partir de la page de manuel de la commande 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.
Pour faire expirer le mot de passe actuel et forcer l'utilisateur à définir un nouveau mot de passe, utilisez la commande ci-dessous :
# passwd -e [username]
Si l'utilisateur ne se souvient pas de son ancien mot de passe, donnez-lui un mot de passe temporaire avec passwd avant d'exécuter la commande ci-dessus.
Vérifier
La prochaine fois que l'utilisateur s'authentifiera (avec son ancien mot de passe), il sera obligé d'entrer un nouveau mot de passe.
# 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.
Pour vérifier si le mot de passe actuel a expiré ou non, utilisez la commande chage .
# chage -l [username]