Tutoriel Linux

Passwd sous Linux : changer un mot de passe sans perdre l’accès au serveur

Débutant6 min de lecture

Changer un mot de passe sous Linux paraît simple, jusqu’au moment où vous le faites sur un serveur distant, sur un compte utilisé par un service, ou sur l’utilisateur qui vous permet encore d’entrer en SSH. Là, une commande lancée trop vite peut vite devenir pénible.

Passwd sous Linux sert à modifier un mot de passe, à forcer son renouvellement ou à verrouiller l’authentification par mot de passe d’un compte. L’outil est fiable, mais il faut bien comprendre ce qu’il change, et surtout ce qu’il ne change pas. Un compte peut encore avoir des clés SSH, des processus ouverts ou des sessions actives.

Tux devant un serveur avec un cadenas et une clé pour illustrer la commande passwd sous Linux
Changer un mot de passe Linux demande aussi de vérifier les accès ouverts.

Changer le mot de passe du compte connecté

Pour changer votre propre mot de passe, la commande la plus courte suffit :

passwd

Linux vous demande l’ancien mot de passe, puis le nouveau. Si la stratégie PAM ou la configuration de la distribution impose une complexité minimale, la commande peut refuser un mot de passe trop court, trop proche de l’ancien ou trop simple.

Sur un serveur, je vous conseille de garder une deuxième session ouverte tant que vous n’avez pas testé une nouvelle connexion. C’est tout bête, mais ça évite de découvrir trop tard que le clavier, le gestionnaire de mots de passe ou la disposition SSH vous a joué un tour.

Changer le mot de passe d’un autre utilisateur

Pour modifier le mot de passe d’un autre compte, il faut des droits administrateur :

sudo passwd alice

Dans cet exemple, alice est le compte concerné. Avant de lancer la commande sur un serveur que vous ne connaissez pas bien, vérifiez que le compte existe et à quoi il sert. L’article sur les utilisateurs Linux donne une méthode propre pour distinguer compte humain, compte système et compte de service.

id alice
getent passwd alice

Si vous changez le mot de passe d’un compte utilisé par un collègue, prévenez-le avant. Si vous changez celui d’un compte applicatif, vérifiez d’abord où ce mot de passe est utilisé. Ce n’est pas la commande passwd qui cassera l’application directement, mais la rotation du secret peut casser une connexion, un script ou un accès automatisé.

Vérifier l’état du mot de passe

La commande peut aussi afficher l’état d’un compte. C’est utile avant de forcer une rotation ou de verrouiller un accès.

sudo passwd -S alice

Selon la distribution, vous verrez un état du type P pour un mot de passe utilisable, L pour un mot de passe verrouillé ou NP si aucun mot de passe n’est défini. Pour aller plus loin sur les dates d’expiration, utilisez plutôt chage.

sudo chage -l alice

Évitez de modifier directement /etc/shadow. Ce fichier stocke les informations sensibles liées aux mots de passe et aux expirations. Si vous devez comprendre son rôle, la page shadow(5) explique le format, mais ce n’est pas un fichier à éditer à la main pour une opération courante.

Forcer un changement à la prochaine connexion

Quand vous créez un compte temporaire ou que vous réinitialisez un mot de passe pour quelqu’un, le plus propre est souvent de forcer le changement à la prochaine connexion :

sudo passwd -e alice

Le mot de passe actuel expire immédiatement. L’utilisateur peut se connecter, mais Linux lui demande d’en définir un nouveau. C’est plus sain que d’envoyer un mot de passe provisoire et de le laisser vivre pendant des mois.

Si l’accès se fait uniquement avec une clé SSH, pensez aussi au sujet des clés. Un mot de passe expiré ne remplace pas une vraie politique de clés, de passphrase et de durée de validité. Si besoin, reprenez le guide sur la création de clé SSH sous Ubuntu.

Verrouiller un mot de passe sans se tromper de portée

Pour verrouiller l’authentification par mot de passe d’un compte, vous pouvez utiliser :

sudo passwd -l alice

Pour revenir en arrière :

sudo passwd -u alice

Attention au piège : passwd -l verrouille le mot de passe, pas forcément tous les moyens d’accès. Si le compte possède une clé SSH autorisée, une session déjà ouverte ou un autre mécanisme d’authentification, vous n’avez pas forcément coupé l’accès complet. La page passwd(1) le rappelle clairement : pour désactiver vraiment un compte, il faut parfois agir aussi sur l’expiration du compte ou sur sa configuration.

Si votre objectif est de bloquer un compte après un départ ou un incident, ne vous contentez pas d’une seule commande. Regardez aussi les clés SSH, les groupes sensibles, les tâches planifiées et les processus en cours.

Regarder les sessions ouvertes avant de couper l’accès

Avant de verrouiller un compte, je vérifie toujours s’il a une session active. Ça permet d’éviter de couper une sauvegarde, une migration ou une intervention en cours.

who
w
loginctl list-sessions
ps -u alice -o pid,tty,stat,cmd

Pour consulter les connexions précédentes :

last -a alice | head

Si l’utilisateur est connecté en SSH, gardez la tête froide. Un changement de mot de passe ne coupe pas forcément la session déjà ouverte. En revanche, un redémarrage de service ou une modification SSH faite en même temps peut vous mettre dehors. Pour ce genre d’opération, le guide sur le redémarrage de SSH sur Ubuntu complète bien les vérifications à faire avant de toucher à l’accès distant.

Quand passwd ne suffit pas

passwd est le bon outil pour modifier l’état du mot de passe. Ce n’est pas l’outil qui règle toute la vie d’un compte.

  • Pour changer les groupes, utilisez plutôt usermod ou les commandes de gestion de groupes.
  • Pour expirer un compte complet, regardez usermod --expiredate ou chage, selon votre distribution.
  • Pour changer beaucoup de mots de passe à la fois, chpasswd existe, mais je le réserverais aux scripts maîtrisés et testés.
  • Pour supprimer un accès SSH, vérifiez les fichiers authorized_keys et la configuration du serveur SSH.

La documentation usermod(8) détaille les options liées à l’expiration et au verrouillage. Pour une intervention simple, gardez une méthode courte : identifier le compte, vérifier les sessions, changer ou expirer le mot de passe, tester une nouvelle connexion, puis seulement ensuite fermer les anciennes portes.

Sur un poste personnel, passwd se résume souvent à une commande. Sur un serveur, c’est une opération d’accès. La différence est là : prenez trente secondes pour vérifier avant de modifier, vous gagnerez beaucoup plus de temps si quelque chose ne se passe pas comme prévu.

sudo apt update && sudo apt upgrade