Comment supprimer un utilisateur sous Linux (et supprimer chaque trace)



La suppression d’un utilisateur sous Linux s’avère être une tâche plus complexe qu’il n’y paraît. En tant qu’administrateur système, il est crucial d’éliminer toute trace du compte et de ses accès de vos systèmes. Cet article détaille les étapes nécessaires pour y parvenir.

Si votre objectif est simplement de supprimer un compte utilisateur de votre système, sans vous préoccuper de l’arrêt des processus en cours ou d’autres tâches de nettoyage, vous pouvez vous contenter de suivre les instructions de la section « Suppression du compte utilisateur » ci-dessous. Pour cela, vous aurez besoin de la commande `deluser` sur les distributions basées sur Debian et de la commande `userdel` sur les autres distributions Linux.

Gestion des comptes d’utilisateurs sous Linux

Depuis l’apparition des premiers systèmes à temps partagé au début des années 1960, qui ont permis à plusieurs utilisateurs de travailler simultanément sur un même ordinateur, il est devenu impératif d’isoler et de compartimenter les fichiers et les données de chaque utilisateur. C’est ainsi que les comptes d’utilisateurs, avec leurs mots de passe, ont vu le jour.

La gestion des comptes d’utilisateurs engendre une surcharge administrative. Ils doivent être créés lors de la première demande d’accès à l’ordinateur par un utilisateur, et supprimés lorsque cet accès n’est plus nécessaire. Sous Linux, il existe une série d’étapes à suivre pour supprimer méthodiquement un utilisateur, ses fichiers et son compte de l’ordinateur.

En tant qu’administrateur système, cette responsabilité vous incombe. Voici comment procéder efficacement.

Mise en situation

Plusieurs raisons peuvent motiver la suppression d’un compte utilisateur. Un employé peut être muté dans une autre équipe ou quitter l’entreprise. Un compte peut avoir été créé pour une collaboration temporaire avec un consultant externe. Les collaborations d’équipes sont fréquentes dans le milieu universitaire, où des projets de recherche peuvent impliquer plusieurs départements, universités, voire des entités commerciales. À la fin de ces projets, l’administrateur système doit effectuer un nettoyage pour supprimer les comptes obsolètes.

Le cas le plus délicat est celui d’un départ conflictuel, suite à un acte répréhensible. Ces situations surviennent souvent de manière inattendue, laissant peu de temps à l’administrateur système pour se préparer. Il devient alors urgent de verrouiller, fermer et supprimer le compte, tout en sauvegardant les fichiers de l’utilisateur, au cas où une analyse ultérieure s’avèrerait nécessaire.

Dans notre exemple, supposons qu’un utilisateur, Eric, ait commis un acte justifiant son éviction immédiate. À ce moment précis, il n’est pas encore informé, il continue de travailler et est toujours connecté. Dès que le signal sera donné à la sécurité, il sera escorté hors du bâtiment.

La situation est sous contrôle. Tous les regards sont tournés vers vous.

Vérification des connexions actives

Commençons par vérifier si Eric est effectivement connecté et, le cas échéant, le nombre de sessions actives. La commande `who` permet d’afficher la liste des sessions actives.

who

Eric est connecté une fois. Examinons maintenant les processus qu’il exécute.

Analyse des processus de l’utilisateur

Pour lister les processus en cours d’exécution pour cet utilisateur, nous allons utiliser la commande `ps`. L’option `-u` (utilisateur) nous permet de limiter la sortie aux processus exécutés sous la propriété de ce compte utilisateur.

ps -u eric

Nous pouvons obtenir des informations plus détaillées sur les mêmes processus en utilisant la commande `top`. `top` possède également une option `-U` (utilisateur) qui permet de limiter la sortie aux processus appartenant à un utilisateur spécifique. Notez que cette fois, l’option est en majuscule.

top -U eric

Nous pouvons observer l’utilisation de la mémoire et du processeur de chaque tâche, ce qui permet d’identifier rapidement toute activité suspecte. Comme nous nous apprêtons à arrêter brutalement tous ses processus, il est judicieux de prendre un moment pour examiner leur nature et s’assurer que d’autres utilisateurs ne seront pas affectés par leur arrêt.

Il semble qu’il n’y ait pas d’activité intensive, mis à part l’affichage d’un fichier. Nous pouvons donc continuer. Mais avant de stopper ses processus, nous allons d’abord verrouiller le compte en modifiant son mot de passe.

Verrouillage du compte

Nous allons verrouiller le compte avant d’arrêter les processus, car l’arrêt des processus déconnectera l’utilisateur. Si nous avons déjà modifié son mot de passe, il ne pourra pas se reconnecter.

Les mots de passe utilisateur chiffrés sont stockés dans le fichier `/etc/shadow`. Bien que ces étapes suivantes ne soient pas indispensables à la suppression de l’utilisateur, nous allons observer ce qui se passe dans le fichier `/etc/shadow` lorsque nous verrouillons le compte. Nous pouvons utiliser la commande suivante pour afficher les deux premiers champs de l’entrée du compte utilisateur eric :

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

La commande `awk` permet d’analyser et de manipuler les champs de fichiers texte. Nous utilisons l’option `-F` (séparateur de champ) pour indiquer à `awk` que le fichier utilise le signe deux-points «:» pour séparer les champs. Nous recherchons une ligne contenant le motif «eric». Pour les lignes correspondantes, nous affichons les premier et deuxième champs, qui sont respectivement le nom du compte et le mot de passe chiffré.

L’entrée du compte utilisateur eric est ainsi affichée.

Pour verrouiller le compte, nous utilisons la commande `passwd`. L’option `-l` (lock) permet de verrouiller le compte utilisateur spécifié.

sudo passwd -l eric

Si nous vérifions à nouveau le fichier `/etc/shadow`, nous verrons ce qui s’est passé.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Un point d’exclamation a été ajouté au début du mot de passe chiffré. Il ne remplace pas le premier caractère, il est simplement ajouté au début du mot de passe. C’est tout ce qu’il faut pour empêcher un utilisateur de se connecter à ce compte.

Maintenant que nous avons empêché l’utilisateur de se reconnecter, nous pouvons arrêter ses processus et le déconnecter.

Arrêt des processus

Il existe plusieurs façons d’arrêter les processus d’un utilisateur, mais la commande présentée ici est largement disponible et représente une approche plus moderne que certaines alternatives. La commande `pkill` trouvera et arrêtera les processus. Nous transmettons le signal `KILL` et utilisons l’option `-u` (utilisateur).

sudo pkill -KILL -u eric

Le retour à l’invite de commande se fait de manière plutôt anti-climatique. Pour nous assurer que l’opération a bien eu lieu, vérifions à nouveau qui est connecté :

who

Sa session est terminée. Il a été déconnecté et ses processus ont été arrêtés. La situation d’urgence est maintenant résolue. Nous pouvons donc nous détendre un peu et poursuivre les tâches de nettoyage pendant que la sécurité se dirige vers le bureau d’Eric.

Archivage du répertoire personnel de l’utilisateur

Dans un scénario comme celui-ci, il est fort probable qu’un accès aux fichiers de l’utilisateur soit nécessaire ultérieurement. Que ce soit pour une enquête ou simplement pour que son remplaçant puisse consulter son travail. Nous allons donc utiliser la commande `tar` pour archiver l’intégralité de son répertoire personnel.

Les options utilisées sont :

c: Créer un fichier archive.
f: Utiliser le nom de fichier spécifié pour nommer l’archive.
j: Utiliser la compression bzip2.
v: Fournir une sortie détaillée lors de la création de l’archive.

sudo tar cfjv eric-20200820.tar.bz /home/eric

De nombreux messages vont défiler dans la fenêtre du terminal. Pour vérifier que l’archive a bien été créée, nous utilisons la commande `ls`, avec les options `-l` (format long) et `-h` (lisible par l’homme).

ls -lh eric-20200802.tar.bz

Un fichier de 722 Mo a été créé. Il peut maintenant être copié dans un emplacement sécurisé pour un examen ultérieur.

Suppression des tâches cron

Il est prudent de vérifier s’il existe des tâches cron planifiées pour le compte utilisateur eric. Une tâche cron est une commande qui est exécutée à des heures ou des intervalles spécifiés. Nous pouvons vérifier s’il existe des tâches cron planifiées pour ce compte utilisateur en utilisant `ls` :

sudo ls -lh /var/spool/cron/crontabs/eric

Si un fichier existe à cet emplacement, cela signifie qu’il y a des tâches cron en attente pour ce compte d’utilisateur. Nous pouvons les supprimer avec la commande `crontab`. L’option `-r` (supprimer) effacera les tâches, et l’option `-u` (utilisateur) précise à `crontab` les tâches de quel utilisateur supprimer.

sudo crontab -r -u eric

Les tâches sont supprimées silencieusement. Dans l’éventualité où Eric aurait soupçonné qu’il allait être renvoyé, il aurait pu planifier une tâche malveillante. Cette étape fait donc partie des bonnes pratiques à suivre.

Suppression des tâches d’impression

L’utilisateur avait peut-être des travaux d’impression en attente ? Par mesure de sécurité, nous allons purger la file d’attente d’impression de tous les travaux appartenant au compte utilisateur eric. La commande `lprm` permet de supprimer les travaux de la file d’attente d’impression. L’option `-U` (nom d’utilisateur) permet de supprimer les travaux appartenant à l’utilisateur spécifié :

lprm -U eric

Les travaux sont supprimés et vous revenez à l’invite de commande.

Suppression du compte utilisateur

Nous avons sauvegardé les fichiers du répertoire `/home/eric/`, nous pouvons donc maintenant supprimer le compte utilisateur et en même temps, supprimer le répertoire `/home/eric/`.

La commande à utiliser dépend de la distribution Linux que vous utilisez. Pour les distributions Linux basées sur Debian, la commande est `deluser`, et pour les autres distributions, c’est `userdel`.

En réalité, sur Ubuntu, les deux commandes sont disponibles. On pourrait s’attendre à ce que l’une soit un alias de l’autre, mais ce sont des binaires distincts.

type deluser
type userdel

Bien que les deux commandes soient disponibles, il est recommandé d’utiliser `deluser` sur les distributions dérivées de Debian :

«`Userdel` est un utilitaire de bas niveau pour supprimer les utilisateurs. Sur Debian, les administrateurs doivent généralement utiliser `deluser` (8) à la place.»

C’est assez clair, la commande à utiliser sur cet ordinateur Ubuntu est donc `deluser`. Puisque nous voulons également que le répertoire personnel soit supprimé, nous utiliserons l’indicateur `–remove-home` :

sudo deluser --remove-home eric

La commande à utiliser pour les distributions non-Debian est `userdel`, avec l’indicateur `–remove` :

sudo userdel --remove eric

Toutes les traces du compte utilisateur eric ont été effacées. Nous pouvons vérifier que le répertoire `/home/eric/` a bien été supprimé :

ls /home

Le groupe eric a également été supprimé, car le compte utilisateur eric était la seule entrée. Nous pouvons facilement le vérifier en filtrant le contenu de `/etc/group` à l’aide de la commande `grep`:

sudo less /etc/group | grep eric

Conclusion

Eric, en raison de ses actes, a été renvoyé. La sécurité est en train de l’escorter hors du bâtiment et vous avez déjà sécurisé et archivé ses fichiers, supprimé son compte et purgé le système de toute trace restante.

La précision doit toujours primer sur la vitesse. Assurez-vous de bien évaluer chaque étape avant de l’effectuer. Vous ne voudriez certainement pas que quelqu’un vienne vous dire « Non, c’était l’autre Eric. »