Comment configurer l’expiration automatique des comptes utilisateurs sous Linux ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons voir comment mettre en place une expiration automatique des comptes locaux sur les systèmes Linux.
Bien que cette fonctionnalité soit couramment utilisée dans les systèmes Windows et l'environnement Active Directory, elle est moins connue et moins fréquemment employée sur les systèmes d'exploitation Linux. Pourtant, elle est tout aussi importante, notamment pour la gestion des comptes temporaires (intervenants externes, stagiaires, etc.). Il est fréquent de trouver des comptes anciens et inutilisés sur des infrastructures vieillissantes, ils deviennent alors des faiblesses potentielles pour le système, car ils ne suivent plus forcément la politique de mot de passe, voire ne sont plus surveillés.
Pour mettre en place l'expiration des comptes, nous utiliserons les commandes natives du système Linux. En effet, Linux inclut déjà des options pour gérer l'expiration des comptes. Techniquement, après expiration, un compte restera présent sur le système (dans le fichier /etc/passwd), mais il ne sera plus utilisable, jusqu'à réactivation par l'administrateur.
Il est important de noter que la procédure pour configurer l'expiration d'un compte à une date donnée diffère selon qu'il s'agit d'un compte à créer ou d'un compte existant.
Enfin, une fois qu'un compte aura passé sa date d'expiration, il sera techniquement toujours disponible, mais l'authentification et l'utilisation de ce compte sera impossible.
# Vue de l'utilisateur lors d'une connexion avec un compte expiré
$ ssh [email protected]
[email protected]'s password:
Your account has expired; please contact your system administrator.
Le message est ici clair, le compte "utilisateurTemp01" a tenté de s’authentifier avec succès, mais il n'a pas obtenu d'accès au système, car son compte est expiré.
L'utilisation des commandes de cet article nécessitent des permissions privilégiées sur le système ("root" ou via "sudo")
Version originale de l'article : 22 septembre 2016.
II. Mettre en place l'expiration lors de la création d'un compte
Pour configurer l'expiration d'un compte utilisateur lors de sa création sur un système Linux, nous utiliserons la commande "useradd" avec l'option "-e" (ou --expiredate) :
-e, --expiredate EXPIRE_DATE expiration date of the new account
Cette option permet donc de définir une date d'expiration pour le compte, après laquelle l'utilisateur ne pourra plus se connecter. La syntaxe de la commande "useradd" pour créer un compte avec une date d'expiration spécifique est la suivante :
# Créer un compte utilisateur avec une date d'expiration
useradd -e YYYY-MM-DD <nom_utilisateur>
# Exemple
useradd -e 2030-07-01 utilisateurTemp01
Cette commande crée un nouveau compte "utilisateurTemp01" avec une date d'expiration fixée au 1er juillet 2030. Après cette date, le compte sera désactivé automatiquement.
Si l'on ne souhaite pas spécifier une date précise, mais plutôt une durée (admettons, 30 jours à partir de la date de création), nous pouvons utiliser la commande de substitution suivante :
# Créer un compte utilisateur avec une date d'expiration dynamique
useradd -e `date -d "30 days" +"%Y-%m-%d"` utilisateurTemp01
Cela peut être particulièrement utile dans le cadre d'une création scriptée. C'est donc le résultat de la commande "date" qui servira de valeur pour l'option "-e" de la commande "useradd".
III. Mettre en place l'expiration pour un compte existant
Comme indiqué dans la présentation de ce tutoriel, la procédure à suivre pour un compte existant est différente que celle pour un compte pas encore créé. Nous allons maintenant voir comment ajouter une date d'expiration pour un compte déjà créé. Notez que cela fonctionnera également si vous souhaitez modifier la date d'expiration d'un compte qui en possède déjà une (pour repousser/raccourcir cette date d'expiration).
Pour ce faire, nous allons utiliser la commande "chage" qui permet de modifier les informations de validité d'un mot de passe. Plus précisément, nous utiliserons l'option "-E" :
-E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
Voici comment utiliser l'option "-E", exactement de la même manière qu'avec la commande "useradd" :
# Paramétrer une date d'expiration pour un compte existant avec la commande "chage"
chage -E YYYY-MM-DD <nom_utilisateur>
# Exemple
chage -E 2030-07-01 utilisateurTemp01
De la même manière qu'avec "useradd", la commande "date" peut être utilisée avec une date dynamique (en fonction de la date de création).
IV. Afficher l'état et la date d'expiration d'un compte
Pour vérifier que la date d'expiration a bien été configurée, vous pouvez utiliser la commande "chage" avec l'option "-l" (ou "--list") qui liste les informations de gestion du compte :
# Afficher la date d'expiration d'un compte utilisateur
$ chage -l <nom_utilisateur>
# Exemple
$ chage -l -E 2030-07-01 utilisateurTemp01
Dernier changement de mot de passe : jamais
Le mot de passe expire : jamais
Compte inactif : jamais
Le compte expire : Jui. 1, 2030
Nombre de jours avant avertissement d'expiration du mot de passe : 7
Nombre de jours pendant lesquels le mot de passe peut être modifié : 0
Nombre de jours avant expiration du mot de passe : 99999
La sortie de cette commande affichera, entre autres informations, la date d'expiration du compte.
V. Réactiver un compte expiré sur Linux
Dans le cas où il est nécessaire de réactiver un compte qui a expiré, nous pouvons de nouveau utiliser la commande "chage" et paramétrer une date dans le futur. Cela aura pour effet de permettre au compte utilisateur d'être utilisé de nouveau.
# Repousser la date d'expiration d'un compte (entraine une réactivation)
chage -E 2026-11-30 utilisateurTemp01
Pour réactiver le compte sans paramétrer de date d'expiration (le compte n'expirera jamais), il faut utiliser la commande "chage -E" en mettant la valeur "-1" au lieu d'une date :
# Réactiver un compte utilisateur sans date d'expiration
chage -E -1 utilisateurTemp01
Ainsi, l'utilisateur redeviendra actif indéfiniment.
VI. Conclusion
Ce tutoriel nous a permis de voir qu'il est possible de gérer la date de désactivation d'un compte avec les commandes natives aux systèmes Linux, que ce soit lors de la création d'un compte ou pour un compte déjà existant. Nous avons également vu les options nécessaires pour contrôler l'état et la date d'expiration programmée pour un compte utilisateur à l'aide de la commande "chage".
Ce tutoriel pourrait aussi vous intéresser, en complément :
N'hésitez pas à donner vos avis et à poser votre question dans les commentaires ou sur notre Discord.
ce tutoriel est plus que formidable, mes félicitations!