Gérer les comptes utilisateurs Linux avec useradd, usermod et userdel

CompTIABeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez acquérir les compétences fondamentales pour gérer les comptes utilisateurs sur un système Linux. Vous mettrez en pratique tout le cycle de vie de l'administration des utilisateurs : de la création et la sécurisation de nouveaux comptes à la modification de leurs propriétés, jusqu'à leur suppression en toute sécurité. Cette expérience pratique est indispensable pour tout administrateur système chargé de maintenir un environnement Linux multi-utilisateurs.

Vous commencerez par utiliser la commande useradd pour créer un nouvel utilisateur et son répertoire personnel, puis vous sécuriserez le compte avec passwd. Ensuite, vous explorerez les différences entre su et su - pour changer d'utilisateur et apprendrez à verrouiller et déverrouiller des comptes. Vous modifierez également les attributs des utilisateurs, tels que les politiques d'expiration des mots de passe avec chage et l'appartenance aux groupes avec usermod. L'atelier se terminera par une démonstration sur la manière de supprimer correctement un utilisateur et ses données associées à l'aide de la commande userdel.

Créer et sécuriser un utilisateur avec useradd et passwd

Dans cette étape, vous apprendrez à créer un nouveau compte utilisateur à l'aide de la commande useradd, puis à le sécuriser en définissant un mot de passe avec la commande passwd. Ce sont des tâches administratives de base pour la gestion d'un système Linux.

Tout d'abord, créons un nouvel utilisateur nommé student1. La commande useradd nécessite les privilèges root pour créer des utilisateurs, vous devrez donc faire précéder la commande de sudo.

Exécutez la commande suivante dans votre terminal :

sudo useradd -m student1

L'option -m est importante ; elle indique à useradd de créer le répertoire personnel de l'utilisateur, qui sera /home/student1 par défaut. Si vous n'utilisez pas -m, l'utilisateur sera créé, mais il n'aura pas de répertoire personnel pour stocker ses fichiers.

Après l'exécution de la commande, le système crée des entrées pour le nouvel utilisateur dans plusieurs fichiers système critiques. Vous pouvez le vérifier en utilisant la commande grep pour rechercher les lignes commençant par student1 dans les fichiers /etc/passwd, /etc/shadow et /etc/group. Comme le fichier /etc/shadow nécessite les privilèges root pour être lu, vous devez utiliser sudo :

sudo grep ^student1 /etc/passwd /etc/shadow /etc/group

Votre sortie devrait ressembler à ceci. Les numéros d'identifiant utilisateur (UID) et d'identifiant de groupe (GID) peuvent varier, mais la structure restera la même :

/etc/passwd:student1:x:5001:5001::/home/student1:/bin/sh
/etc/shadow:student1:!:20265:0:99999:7:::
/etc/group:student1:x:5001:

Analysons cette sortie :

  • /etc/passwd : Ce fichier contient les informations de base du compte utilisateur. Le x dans le deuxième champ indique que le mot de passe chiffré n'est pas stocké ici, mais dans le fichier /etc/shadow pour des raisons de sécurité.
  • /etc/shadow : Ce fichier contient les informations sécurisées du compte. Le deuxième champ contiendra initialement ! ou *, indiquant qu'aucun mot de passe n'a encore été défini et que le compte ne peut pas être utilisé pour se connecter.
  • /etc/group : Un nouveau groupe, également nommé student1, a été automatiquement créé pour être le groupe principal de cet utilisateur.

Maintenant que l'utilisateur existe, vous devez définir un mot de passe pour rendre le compte utilisable et sécurisé. Nous utiliserons la commande passwd pour cela. Comme pour useradd, elle nécessite sudo lors de la modification du mot de passe d'un autre utilisateur.

sudo passwd student1

Le système vous demandera de saisir, puis de confirmer, un nouveau mot de passe pour student1. Pour cet atelier, veuillez utiliser student1pass comme mot de passe. Notez que pour des raisons de sécurité, ce que vous tapez ne s'affichera pas à l'écran.

New password:
Retype new password:
passwd: password updated successfully

Une fois le mot de passe défini, vérifions à nouveau le fichier /etc/shadow pour voir ce qui a changé. Comme /etc/shadow nécessite les privilèges root, utilisez sudo :

sudo grep ^student1 /etc/shadow

La sortie sera désormais différente. Les points de suspension ... représentent une longue chaîne de caractères unique.

student1:$y$j9T$lUM1RtLPQdrCOHmaFf1po/$xqNw.5dz54yR9whxsID9teI28/BOyvKocK5dA9X7GoD:20265:0:99999:7:::

Remarquez que le deuxième champ contient maintenant une longue chaîne complexe. Il s'agit de la version hachée (chiffrée) du mot de passe que vous venez de définir. Le compte est maintenant actif et peut être utilisé pour se connecter.

Changer d'utilisateur et comprendre les différences d'environnement entre su et su -

Dans cette étape, vous allez explorer comment basculer vers un autre compte utilisateur au sein de votre session de terminal actuelle à l'aide de la commande su (substitute user). Vous apprendrez également la différence cruciale entre l'utilisation de su avec et sans le drapeau - (ou --login), qui affecte considérablement l'environnement de l'utilisateur.

Tout d'abord, examinons votre environnement actuel en tant qu'utilisateur labex. Lancez ces commandes pour voir votre utilisateur actuel, votre répertoire personnel et votre répertoire de travail :

whoami
echo $HOME
pwd

Vous verrez la sortie suivante, confirmant que vous êtes l'utilisateur labex dans votre répertoire de projet :

labex
/home/labex
/home/labex/project

Maintenant, passons à l'utilisateur student1 que vous avez créé précédemment. Utilisez la commande su suivie du nom d'utilisateur. Le mot de passe de student1 vous sera demandé (student1pass).

su student1

Après avoir saisi le mot de passe, votre session fonctionne désormais sous l'identité de student1. Cependant, l'environnement n'est pas totalement chargé. Relançons les mêmes commandes pour voir ce qui a changé.

whoami
echo $HOME
pwd

Observez le résultat :

student1
/home/student1
/home/labex/project

Voici ce que cela nous indique :

  • whoami : Vous êtes bien devenu student1.
  • echo $HOME : La variable d'environnement HOME pointe maintenant vers le répertoire personnel du nouvel utilisateur (student1).
  • pwd : Vous êtes toujours dans le même répertoire qu'avant le changement d'utilisateur (/home/labex/project).

Ce comportement peut être problématique car certains scripts et applications s'appuient sur la variable HOME pour trouver des fichiers de configuration, ce qui peut entraîner des comportements inattendus.

Maintenant, tapez exit pour revenir au shell de votre utilisateur labex.

exit

Ensuite, essayons à nouveau de changer d'utilisateur, mais cette fois avec le drapeau -. Ce drapeau indique à su de lancer un shell de connexion (login shell), ce qui simule une connexion complète pour le nouvel utilisateur. Cela signifie qu'il chargera l'environnement complet de student1, y compris son répertoire personnel et son profil de shell.

su - student1

Saisissez à nouveau le mot de passe (student1pass). Maintenant, lancez la même série de commandes de diagnostic :

whoami
echo $HOME
pwd

Comparez le résultat avec la tentative précédente :

student1
/home/student1
/home/student1

Les différences sont significatives :

  • whoami : Vous êtes toujours student1.
  • echo $HOME : La variable HOME pointe vers /home/student1.
  • pwd : Votre répertoire de travail actuel a été modifié pour devenir le répertoire personnel de student1.

Cela démontre que su - <nom_utilisateur> est la méthode recommandée pour changer d'utilisateur en ligne de commande, car elle fournit un environnement propre et prévisible, évitant ainsi les problèmes de chemins ou de permissions incorrects.

Pour terminer cette étape, tapez exit pour revenir à votre session labex d'origine.

exit

Verrouiller et déverrouiller des comptes utilisateurs avec passwd -l et passwd -u

Dans cette étape, vous apprendrez à désactiver temporairement un compte utilisateur en le verrouillant, puis à le réactiver en le déverrouillant. C'est une pratique administrative courante lorsqu'on doit empêcher un utilisateur de se connecter sans pour autant supprimer son compte et ses fichiers.

Tout d'abord, verrouillons le compte student1. Pour ce faire, utilisez la commande passwd avec l'option -l (lock). Cette action nécessite des privilèges administratifs, vous devez donc utiliser sudo.

sudo passwd -l student1

La commande confirmera que le mot de passe a été verrouillé. Le message de sortie peut varier légèrement mais indique le succès de l'opération.

passwd: password for user student1 changed.

Mais que fait réellement le "verrouillage" ? Inspectons à nouveau le fichier /etc/shadow pour voir l'effet produit.

sudo grep ^student1 /etc/shadow

Vous remarquerez un changement subtil mais important. La chaîne du mot de passe chiffré est désormais préfixée par un ou deux points d'exclamation (!). Les points de suspension ... représentent le reste de votre empreinte unique.

student1:!$y$j9T$...:20265:0:99999:7:::

Ce préfixe ! invalide l'empreinte du mot de passe stocké, rendant impossible la correspondance avec tout mot de passe fourni par l'utilisateur. Par conséquent, l'utilisateur ne peut plus se connecter. Testons cela. Essayez de passer à l'utilisateur student1 :

su - student1

Un mot de passe vous sera demandé, mais même si vous saisissez le bon (student1pass), la connexion échouera.

Password:
su: Authentication failure

Cela confirme que le compte est bien verrouillé. Maintenant, déverrouillons-le. Pour réactiver le compte, il suffit d'inverser le processus en utilisant l'option -u (unlock) avec la commande passwd.

sudo passwd -u student1

À nouveau, la commande confirmera le changement.

passwd: password for user student1 changed.

Vérifions le fichier /etc/shadow une dernière fois pour s'assurer que le compte est déverrouillé.

sudo grep ^student1 /etc/shadow

La sortie montre que le préfixe ! a été supprimé, restaurant l'empreinte du mot de passe d'origine.

student1:$y$j9T$...:20265:0:99999:7:::

Le compte est à nouveau actif. Vous pouvez le confirmer en réussissant à basculer vers l'utilisateur student1. Saisissez le mot de passe student1pass lorsque vous y êtes invité.

su - student1

Vous devriez maintenant être connecté en tant que student1. Enfin, tapez exit pour revenir à votre session labex.

exit

Modifier l'expiration du mot de passe et l'appartenance aux groupes avec chage et usermod

Dans cette étape, vous allez gérer des propriétés utilisateur plus avancées. Vous apprendrez à appliquer des politiques de sécurité des mots de passe à l'aide de chage pour contrôler l'expiration, et à gérer les appartenances aux groupes d'un utilisateur avec usermod pour contrôler ses permissions et droits d'accès.

Tout d'abord, examinons les informations d'expiration du mot de passe pour le compte student1. La commande chage (change age) avec le drapeau -l (list) affiche ces détails.

sudo chage -l student1

La sortie affichera les paramètres par défaut du compte. Les dates correspondront au moment où vous avez créé l'utilisateur.

Last password change     : Dec 08, 2024
Password expires     : never
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 0
Maximum number of days between password change  : 99999
Number of days of warning before password expires : 7

Pour la sécurité, il est recommandé d'exiger que les utilisateurs changent périodiquement leur mot de passe. Définissons une politique où le mot de passe doit être changé tous les 90 jours (-M 90), ne peut être changé qu'une fois tous les 7 jours (-m 7), et l'utilisateur reçoit un avertissement 14 jours avant l'expiration (-W 14).

sudo chage -M 90 -m 7 -W 14 student1

Maintenant, visualisez à nouveau les paramètres pour confirmer vos modifications :

sudo chage -l student1

La sortie reflétera la nouvelle politique :

Last password change     : Dec 08, 2024
Password expires     : Mar 08, 2025
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 7
Maximum number of days between password change  : 90
Number of days of warning before password expires : 14

Ensuite, modifions les appartenances aux groupes. Un utilisateur appartient à un groupe principal et peut appartenir à plusieurs groupes secondaires (ou supplémentaires). Vous pouvez voir les groupes d'un utilisateur avec la commande id.

id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1)

Cela montre que le groupe principal de student1 est student1 (gid=5001) et qu'il n'appartient encore à aucun groupe secondaire.

Créons un nouveau groupe appelé developers et ajoutons-y student1. D'abord, créez le groupe :

sudo groupadd developers

Maintenant, ajoutez student1 à ce nouveau groupe en utilisant usermod. Les drapeaux -aG sont cruciaux : -G spécifie les groupes secondaires, et -a (append) ajoute l'utilisateur au groupe sans le retirer de ses autres groupes.

sudo usermod -aG developers student1

Vérifiez à nouveau les groupes de l'utilisateur :

id student1

La sortie inclut désormais le groupe developers :

uid=5001(student1) gid=5001(student1) groups=5001(student1),1002(developers)

Que se passe-t-il si vous oubliez le drapeau -a ? Créons un autre groupe, testers, et ajoutons student1 en utilisant uniquement -G.

sudo groupadd testers
sudo usermod -G testers student1

Vérifiez les groupes une fois de plus :

id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1),1003(testers)

Remarquez que student1 ne fait plus partie du groupe developers. L'utilisation de usermod -G sans -a remplace tous les groupes secondaires existants par la nouvelle liste. Pour que l'utilisateur soit dans les deux groupes, vous devez soit lister tous les groupes (-G developers,testers), soit utiliser le drapeau d'ajout. Rectifions cela en rajoutant correctement student1 au groupe developers.

sudo usermod -aG developers student1

Vérifiez l'état final. L'utilisateur doit maintenant être membre des deux groupes.

id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1),1003(testers),1002(developers)

Supprimer des utilisateurs et leurs données avec userdel et userdel -r

Dans cette étape, vous apprendrez à supprimer définitivement des comptes utilisateurs du système à l'aide de la commande userdel. Vous verrez la distinction importante entre la simple suppression des informations de compte et la suppression du compte accompagnée de tous ses fichiers associés, comme le répertoire personnel.

Tout d'abord, pour démontrer les deux méthodes de suppression, créons un second utilisateur nommé student2.

sudo useradd -m student2

Vous avez maintenant deux utilisateurs : student1 (des étapes précédentes) et le nouveau student2.

Commençons par supprimer l'utilisateur student1 sans option particulière. La commande userdel par défaut supprime les entrées de l'utilisateur dans les fichiers de compte système comme /etc/passwd et /etc/shadow, mais elle ne supprime pas son répertoire personnel. Cela peut être utile si vous devez archiver les données de l'utilisateur avant de les supprimer totalement.

sudo userdel student1

Pour confirmer que le compte utilisateur a disparu, essayez de le chercher avec grep dans /etc/passwd.

grep ^student1 /etc/passwd

Cette commande ne produira aucune sortie, ce qui confirme que l'entrée du compte a été supprimée. Cependant, qu'en est-il de son répertoire personnel ? Vérifions si /home/student1 existe toujours.

ls -ld /home/student1

Vous verrez que le répertoire est toujours là, bien que le propriétaire soit maintenant affiché sous forme de numéro (l'ancien UID de l'utilisateur) car le système ne peut plus faire correspondre cet identifiant à un nom d'utilisateur.

drwxr-x--- 2 5001 5001 78 Jun 26 08:18 /home/student1

Maintenant, supprimons l'utilisateur student2, mais cette fois avec le drapeau -r (remove). Cette option indique à userdel de supprimer le répertoire personnel de l'utilisateur et sa file d'attente de courriels (mail spool) en plus de ses entrées de compte. C'est une suppression complète et irréversible.

sudo userdel -r student2

Il est possible que vous voyiez un message d'avertissement indiquant que la file d'attente de courriels n'a pas été trouvée, ce qui est normal puisque l'utilisateur n'a jamais reçu de courrier :

userdel: student2 mail spool (/var/mail/student2) not found

Cet avertissement n'indique pas une erreur — il signifie simplement qu'il n'y avait pas de fichier de courriels à supprimer, ce qui est attendu pour un utilisateur nouvellement créé.

Tout d'abord, vérifiez que l'entrée du compte a disparu de /etc/passwd. Comme précédemment, cette commande ne devrait rien renvoyer.

grep ^student2 /etc/passwd

Ensuite, et c'est le plus important, vérifiez l'existence du répertoire personnel /home/student2.

ls -ld /home/student2

Cette fois, la commande échouera avec un message d'erreur, prouvant que le répertoire a été complètement supprimé en même temps que le compte utilisateur.

ls: cannot access '/home/student2': No such file or directory

Vous avez maintenant pratiqué avec succès les deux méthodes de suppression d'utilisateurs, ce qui vous donne la flexibilité de conserver ou d'effacer définitivement les données d'un utilisateur selon les besoins.

Résumé

Dans cet atelier, vous avez appris les commandes fondamentales pour gérer les comptes utilisateurs sur un système Linux. Vous avez commencé par créer un nouvel utilisateur avec useradd -m, en vous assurant qu'un répertoire personnel était également créé, puis vous avez sécurisé le compte en définissant un mot de passe avec passwd. Vous vous êtes exercé à basculer entre les utilisateurs en utilisant su et su -, apprenant ainsi la différence cruciale entre un environnement de shell standard et un shell de connexion. Vous avez également appris à gérer l'accès aux comptes en les verrouillant et déverrouillant avec les options -l et -u de la commande passwd.

L'atelier s'est poursuivi par la modification des attributs d'utilisateurs existants. Vous avez utilisé chage pour gérer les politiques d'expiration des mots de passe et usermod pour modifier l'appartenance d'un utilisateur à des groupes. Enfin, vous avez exploré le processus de suppression des utilisateurs du système, en distinguant la commande userdel, qui supprime le compte utilisateur, de la commande userdel -r, qui supprime également le répertoire personnel et la file d'attente de courriels pour un nettoyage complet.