Vous devez retirer le compte d’un ancien technicien ou nettoyer un utilisateur local devenu inutile. La commande userdel paraît simple, mais son option -r peut supprimer le dossier personnel avec les données qu’il contient. Une faute sur le nom du compte ou un home inhabituel suffit pour effacer le mauvais répertoire.
Je vous conseille de séparer la suppression du compte et celle des fichiers. Commencez par relever l’UID, le home, les groupes, les sessions et les processus. Décidez ensuite si les données doivent être archivées, transférées ou supprimées. Cette méthode prend quelques minutes et évite un nettoyage irréversible.

Confirmer le compte local et son dossier personnel
Dans les exemples suivants, remplacez alice par le vrai login. Vérifiez d’abord le compte avec plusieurs sources :
getent passwd alice
grep '^alice:' /etc/passwd
id alice
getent peut retourner un compte provenant de LDAP, SSSD ou d’un autre annuaire. Si l’utilisateur apparaît avec getent mais pas dans /etc/passwd, ne lancez pas userdel à l’aveugle : traitez le compte dans l’annuaire qui le gère. Le guide pour lister les utilisateurs Linux détaille cette différence entre comptes locaux et comptes fournis par NSS.
Enregistrez ensuite l’UID et le chemin du home dans votre session d’administration :
uid=$(id -u alice)
home=$(getent passwd alice | cut -d: -f6)
echo "UID=$uid HOME=$home"
id -nG alice
sudo ls -ld "$home"
Relisez la sortie avant de continuer. Un compte de service peut avoir un home sous /var/lib, /srv ou un répertoire partagé. Ne vous fiez pas au seul préfixe /home. Vérifiez aussi que vous ne supprimez ni votre propre compte SSH, ni un compte utilisé par une application.
Contrôler les sessions, processus et tâches planifiées
Un compte absent de l’écran de connexion peut encore exécuter un service, une sauvegarde ou une tâche cron. Contrôlez les sessions et les processus avant de les arrêter :
who
w
loginctl list-sessions
pgrep -a -u alice
ps -u alice -o pid,ppid,lstart,cmd
Si vous trouvez un processus métier, identifiez son service et transférez sa configuration vers un compte technique avant toute suppression. Un kill -9 n’est pas une procédure de départ de collaborateur. L’article sur kill sous Linux explique comment demander un arrêt propre et lire les journaux avant de forcer.
Vérifiez également la crontab et les unités systemd qui citent ce login :
sudo crontab -u alice -l
sudo grep -R --line-number '^[[:space:]]*User=alice[[:space:]]*$' /etc/systemd/system /usr/lib/systemd/system 2>/dev/null
La configuration USERDEL_CMD dans /etc/login.defs peut lancer un script de nettoyage des tâches cron, at ou d’impression, mais elle n’est pas identique sur toutes les distributions. La documentation de login.defs confirme que le résultat de ce script n’est pas pris en compte par userdel. Sauvegardez ou supprimez donc les tâches explicitement avant le compte.
Pour geler temporairement l’authentification par mot de passe pendant vos contrôles :
sudo passwd -l alice
Ce verrouillage ne ferme pas les sessions actives et ne bloque pas forcément les clés SSH. Vérifiez ces accès séparément. Le guide sur passwd sous Linux détaille cette limite.
Rechercher les fichiers du compte avant de toucher au home
Le dossier personnel n’est pas le seul endroit où l’utilisateur peut posséder des fichiers. Recherchez son UID dans les emplacements utiles au serveur :
sudo find /home /srv /var/www -xdev -uid "$uid" -print
Adaptez les points de départ à vos volumes. L’option -xdev empêche chaque recherche de traverser vers un autre système de fichiers ; répétez donc la commande sur les montages de données concernés. Évitez un find / improvisé sur un serveur de production ou un stockage réseau très volumineux.
Si les données doivent être conservées, vérifiez l’espace puis créez une archive du home :
df -h /root "$home"
sudo du -sh "$home"
sudo tar --one-file-system -C "$(dirname "$home")" -czf "/root/alice-home-$(date +%F).tar.gz" "$(basename "$home")"
sudo tar -tzf "/root/alice-home-$(date +%F).tar.gz" | head
Une liste d’archive lisible ne remplace pas une restauration testée. Pour un home important, utilisez plutôt votre sauvegarde habituelle ou un snapshot, puis contrôlez quelques fichiers restaurés sur une autre destination.
Choisir entre conserver le home et le supprimer
La commande sans -r retire le compte des fichiers système, mais conserve son dossier personnel :
sudo userdel alice
C’est mon choix par défaut quand les données n’ont pas encore été validées par leur propriétaire ou transférées vers un autre compte. Vous pouvez supprimer le répertoire plus tard, après contrôle.
Si le home et la boîte mail locale doivent réellement disparaître, utilisez :
sudo userdel -r alice
D’après la page de manuel de userdel, -r supprime le home et le mail spool, mais pas les fichiers appartenant à l’utilisateur sur d’autres systèmes de fichiers. La commande ne remplace donc pas l’inventaire réalisé avec l’UID.
N’utilisez pas userdel -f pour contourner un message signalant des processus actifs. Cette option ignore des contrôles de sécurité et peut laisser le système dans un état incohérent. Revenez à pgrep, identifiez le service concerné, arrêtez-le proprement puis relancez la suppression.
Vérifier ce qui reste après userdel
Gardez la même session shell afin de conserver les variables $uid et $home, puis vérifiez le résultat :
getent passwd alice || echo "Compte absent"
id alice
pgrep -a -u "$uid"
test -e "$home" && sudo ls -ld "$home" || echo "Dossier personnel absent"
sudo find /home /srv /var/www -xdev -uid "$uid" -ls
id alice doit signaler que le login n’existe plus. Si des fichiers restent avec l’ancien UID, décidez dossier par dossier s’ils doivent être archivés, réattribués ou supprimés. N’appliquez pas un chown -R global sans connaître le rôle des données.
Contrôlez enfin les groupes, les configurations systemd, les clés SSH copiées ailleurs et les tâches planifiées relevées avant la suppression. L’UID pourra être réutilisé un jour par un nouveau compte : laisser des fichiers orphelins sans décision crée alors un problème de droits difficile à repérer.