Userdel

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Gestion des comptes utilisateurs
Commande userdel
Contexte Toutes distributions Linux (shadow-utils)
Voir aussi Useradd, Kill

userdel supprime un compte utilisateur Linux (l'entrée correspondante dans /etc/passwd et /etc/shadow, ainsi que son appartenance aux groupes). Par défaut elle ne touche ni au répertoire personnel ni aux fichiers de l'utilisateur ailleurs sur le système — voir les sections ci-dessous pour un nettoyage complet.

Suppression simple

userdel benoit

Le compte disparaît de /etc/passwd//etc/shadow, mais le répertoire personnel (/home/benoit) et le mail spool (/var/mail/benoit ou /var/spool/mail/benoit) restent en place.

Suppression complète (-r)

userdel -r benoit

L'option -r supprime en plus le répertoire personnel et le mail spool de l'utilisateur. Elle ne supprime en revanche aucun fichier appartenant à benoit situé ailleurs sur le système (crontab, fichiers déposés dans /tmp, données sur un point de montage partagé, propriété laissée sur des fichiers de projet, etc.).

Repérer les fichiers orphelins ailleurs sur le système

Une fois le compte supprimé, son UID peut être réattribué à un futur utilisateur : tout fichier resté au nom de l'ancien propriétaire deviendrait alors silencieusement lisible/modifiable par le nouveau titulaire du même UID. Avant de considérer la suppression comme terminée, repérer ces fichiers pendant que le nom existe encore dans getent passwd (ou en gardant l'UID numérique en note) :

find / -user benoit 2>/dev/null

À exécuter idéalement avant userdel (le nom d'utilisateur reste alors résolu normalement) ou juste après, en remplaçant benoit par son UID numérique si le compte a déjà disparu de /etc/passwd.

Erreur « user ... is currently used by process »

userdel refuse de supprimer un compte tant qu'un processus tourne encore sous son UID (le message exact varie selon la distribution, mais l'idée est la même : suppression bloquée par un process actif). Repérer puis terminer ces processus avant de relancer la commande :

ps -u benoit                # lister les processus de benoit
pkill -u benoit              # leur envoyer SIGTERM
pkill -9 -u benoit           # forcer si SIGTERM ne suffit pas
fuser -k /home/benoit        # variante ciblée sur les process qui ont un fichier ouvert dans le home

Voir Kill pour le détail de pkill/fuser et la différence entre SIGTERM et SIGKILL. Une fois qu'aucun processus ne tourne plus sous cet UID (ps -u benoit ne renvoie plus rien), userdel -r benoit peut s'exécuter normalement.

Voir aussi

  • Useradd — création et modification des comptes utilisateurs, pendant naturel de cette page
  • Kill — envoyer un signal à un processus (pkill -u, fuser) avant une suppression bloquée