How to Remove a User in Linux

When an account is no longer needed, you can remove it from Linux with the userdel command:
sudo userdel usernameThis removes the user account but keeps the home directory and files. To remove the account and the home directory at the same time, use userdel -r:
sudo userdel -r usernameLinux is a multi-user system, which means that more than one person can interact with the same system at the same time. As a system administrator, you manage users and groups by creating new users , assigning them to groups , and removing accounts when someone leaves the organization or when an account is no longer needed.
The userdel command removes a user account from a Linux system. It deletes the user’s entries from the /etc/passwd
and /etc/shadow files.
Only root or users with sudo
privileges can delete user accounts.
Quick Reference
| Task | Command |
|---|---|
| Remove a user and keep home directory | sudo userdel username |
| Remove a user and home directory | sudo userdel -r username |
| Force remove a logged-in user | sudo userdel -f username |
| Remove user, home directory, and SELinux mapping | sudo userdel -rZ username |
| Kill all user processes | sudo pkill -u username |
| End active login sessions | sudo loginctl terminate-user username |
| Remove user’s cron jobs | sudo crontab -r -u username |
| Stop user services at boot | sudo loginctl disable-linger username |
| Disable an account temporarily | sudo usermod -L --expiredate 1 username |
| Find files with no valid owner | sudo find / -nouser |
| Find files by UID | sudo find / -uid 1001 |
| Verify user was removed | id username |
| Remove user with deluser on Debian/Ubuntu | sudo deluser --remove-home username |
userdel Command Syntax
userdel [OPTIONS] USERNAMEWhen invoked without options, userdel removes the user account but leaves the home directory and mail spool intact. The command also reads /etc/login.defs; if USERGROUPS_ENAB is set to yes, it deletes the user’s primary group only if no other users belong to it.
Alongside /etc/passwd and /etc/shadow, the command clears the account’s entries from /etc/group, /etc/gshadow, and the /etc/subuid and /etc/subgid files that map the subordinate ID ranges used by rootless Docker and Podman containers.
To work on a different root filesystem, such as a rescue system mounted at /mnt/sysimage, pass the -R (--root) option with an absolute path:
sudo userdel -R /mnt/sysimage usernameBefore You Remove a User
Before removing a user, decide what should happen to the account’s files and scheduled tasks. A safe cleanup usually means checking these items first:
- Back up files from the user’s home directory if they may be needed later.
- Check whether the user is logged in or has running processes.
- Remove the user’s cron jobs,
atjobs, and systemd user services if the scheduled work should not continue. - Lock the account instead of deleting it if access only needs to be disabled temporarily.
Remove a User in Linux
To remove a user account and keep the home directory:
sudo userdel usernameThis removes the user from /etc/passwd and /etc/shadow but keeps the home directory and all user files.
Remove a User and Home Directory
To remove the user account along with the home directory and mail spool, use the -r (--remove) option:
sudo userdel -r username-r option permanently deletes the user’s home directory and its contents. Back up any important data before running this command.Files owned by the user in other locations are not removed. See Finding Orphaned Files below.
Remove a Logged-In User
If the user is still logged in or has running processes
, userdel will refuse to remove the account.
First, list the user’s running processes:
ps -u usernameIf you are sure those processes should be stopped, signal every process belonging to the user with pkill
:
sudo pkill -u usernamekillall
accepts the same option and does the same job:
sudo killall -u usernameOf the two, pkill is the safer default on an unfamiliar server. It ships with procps-ng, which Debian, Ubuntu, RHEL, and Fedora all install by default, while killall comes from psmisc, a package that minimal RHEL and Fedora installations often leave out.
Then delete the user:
sudo userdel -r usernameAlternatively, the -f (--force) option removes the account and carries out any other requested actions while skipping the safety checks, including the check for an active login:
sudo userdel -f usernameReach for -f only when you know what it bypasses. The manual page calls the option dangerous and warns that it may leave the system in an inconsistent state. Processes can keep running under a UID that no longer maps to an account. When -f is combined with -r, ownership and shared-directory safety checks no longer protect the home directory and mail spool. If USERGROUPS_ENAB is enabled, -f can also delete a group matching the username even when it is still the primary group of someone else.
Removing Scheduled Jobs and Lingering Services
Deleting an account does not reliably remove its scheduled-job files or systemd linger setting. Some schedulers skip jobs once the username no longer resolves, while queued jobs and already-running user services may behave differently. Clean up these items before deleting the account to avoid stale configuration or work continuing under an unmapped UID.
Start with the user’s cron jobs:
sudo crontab -r -u usernameNext, look for one-off jobs queued with at
:
sudo atq14 Tue Aug 18 03:00:00 2026 a usernameThe first column is the job number and the last column is the owner. Remove the jobs belonging to the account by passing their numbers to atrm:
sudo atrm 14On systemd distributions, an account can have lingering enabled, which starts its user services at boot and keeps them running with no login session open. Turn that off:
sudo loginctl disable-linger usernameFinally, end any session the user still holds:
sudo loginctl terminate-user usernameDo all of this before running userdel, while the username still resolves to a UID.
Removing the SELinux User Mapping
On distributions that run SELinux, such as RHEL, Fedora, and their derivatives, a login can be mapped to an SELinux user. That mapping is stored outside /etc/passwd, so a plain userdel leaves it in place.
Check whether the account has one:
sudo semanage login -lLogin Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
username staff_u s0-s0:c0.c1023 *The username row shows the account is confined to the staff_u SELinux user. Add the -Z (--selinux-user) option to clear that mapping along with the account:
sudo userdel -rZ usernameSkipping this step leaves a stale entry behind. Because the mapping is keyed on the login name, a brand new account created later under the same name inherits the old confinement.
Locking a User Instead of Deleting
If you only need to disable access temporarily, use usermod
to lock the password and expire the account:
sudo usermod -L --expiredate 1 usernameThe -L option locks password authentication, while --expiredate 1 disables the account for other login methods, including SSH key authentication. Account expiration does not end sessions that are already open. On a systemd distribution, terminate them separately:
sudo loginctl terminate-user usernameTo restore access later, unlock the password and restore the previous account expiration date. If the account did not have an expiration date before it was disabled, clear the temporary value:
sudo usermod -U --expiredate "" usernameFinding Orphaned Files
After deleting a user, files they owned outside the home directory remain on the system. These files are now owned by the user’s old numeric UID.
To find all files with no valid owner:
sudo find / -nouserTo find files owned by a specific UID, for example 1001:
sudo find / -uid 1001You can then decide to delete , reassign, or archive these files.
Verifying the User Was Deleted
To confirm the user account no longer exists:
id usernameid: 'username': no such userYou can also check:
getent passwd usernameNo output means the user does not exist.
deluser on Debian and Ubuntu
On Debian-based distributions (Debian, Ubuntu, Linux Mint), the deluser command is a higher-level wrapper around userdel. It reads its configuration from /etc/deluser.conf and handles additional cleanup.
To delete a user and their home directory with deluser:
sudo deluser --remove-home usernameTo remove the user from a specific group without deleting the account:
sudo deluser username groupnameTroubleshooting
userdel: user username is currently used by process 1234
The user still has running processes, and the number at the end of the message is the PID of one of them. List them all with:
ps -u usernameStop the processes normally if possible. If they must be stopped immediately, use:
sudo pkill -u usernameThen run userdel again.
userdel: user username is currently logged in
The user has an active login session. Ask the user to log out, or end the session yourself on a systemd distribution:
sudo loginctl terminate-user usernameFall back to userdel -f only when you understand what the option bypasses:
sudo userdel -f usernameuserdel: user username does not exist
The account name is wrong or the user was already removed. Check the account database:
getent passwd usernameIf the command prints no output, the user does not exist.
The home directory was not removeduserdel username removes only the account. Use -r when you want to remove the home directory and mail spool:
sudo userdel -r usernameIf the account was already removed, you can manually review and delete the old home directory after confirming it is no longer needed.
Files are still owned by the deleted user
Files outside the home directory are not removed by userdel -r. Find files without a valid owner:
sudo find / -nouserReview the results and decide whether to delete, archive, or reassign those files.
When you call userdel from a script, test its exit status rather than matching on the message text, which varies between shadow-utils versions:
| Code | Meaning |
|---|---|
0 | Success |
1 | Cannot update the password file |
2 | Invalid command syntax |
6 | The specified user does not exist |
8 | The user is currently logged in |
10 | Cannot update the group file |
12 | Cannot remove the home directory |
14 | Cannot update the SELinux user mapping |
16 | Cannot update the subordinate UID file |
18 | Cannot update the subordinate GID file |
Code 12 is the one that catches people out. The account is already gone at that point, but the home directory is still on disk and has to be removed by hand.
Codes 14, 16, and 18 apply only when the corresponding SELinux or subordinate ID support is enabled in the installed shadow-utils build.
FAQ
Does userdel delete the home directory?
Not by default. Use userdel -r to remove the home directory and mail spool along with the account.
What happens to files owned by a deleted user?
Files outside the home directory remain on the system, owned by the user’s old numeric UID. Use find / -nouser to locate them.
What is the difference between userdel and deluser?userdel is the low-level command available on all Linux distributions. deluser is a higher-level wrapper available on Debian-based systems that reads configuration from /etc/deluser.conf and provides additional options.
Can I delete a user that is currently logged in?
Not without the -f flag. Either log the user out and kill their processes first, or use userdel -f to force the removal.
Does deleting a user remove their cron jobs?
No. userdel does not reliably remove the user’s crontab, queued at jobs, or systemd linger setting. Some schedulers skip jobs after the username stops resolving, but the stored entries remain. Run sudo crontab -r -u username, clear queued jobs with atrm, and run sudo loginctl disable-linger username before deleting the account.
How do I undo a user deletion?
You cannot undo userdel. If you deleted the home directory with -r, the data is gone unless you have a backup. You would need to recreate the user
and restore their files.
Conclusion
The userdel command removes user accounts from Linux. Use -r when you also want to remove the home directory, clear scheduled jobs and active sessions before deleting logged-in users, and run find / -nouser afterward to locate the files left behind. For the other half of the workflow, the useradd cheatsheet
covers the options used when creating accounts.
Tags
Linuxize Weekly Newsletter
A quick weekly roundup of new tutorials, news, and tips.
About the authors

Dejan Panovski
Dejan Panovski is the founder of Linuxize, an RHCSA-certified Linux system administrator and DevOps engineer based in Skopje, Macedonia. Author of 800+ Linux tutorials with 20+ years of experience turning complex Linux tasks into clear, reliable guides.
View author page