Skip to content
Commitpedia
Log in Join & edit

Users, groups and sudo on Debian, Ubuntu and RHEL

How Linux accounts and groups work, how to create users, and how sudo gives admin rights through the sudo group on Debian/Ubuntu or wheel on RHEL.

Not checked by a trusted editor yet Last edited Outdated?

Edit history of Users, groups and sudo on Debian, Ubuntu and RHEL: 1 recorded edit
Edit history · 1 edit
Type
Article
Edits
1
Editors
1
First issued
15 Oct 2026
Last edit
15 Oct 2026
Reading
3 min

Every process on Linux runs as a user, and every file belongs to a user and a group. Permissions decide what each user may read, write or run. The special user root (user ID 0) may do anything. On a well-run server, people log in with their own accounts and use sudo to run single commands as root, so every admin action is tied to a name and logged.

Where accounts live

  • /etc/passwd: one line per account with name, user ID (UID), primary group ID, home directory and login shell. Readable by everyone; it contains no passwords.
  • /etc/shadow: password hashes and expiry data, readable only by root.
  • /etc/group: groups and their extra (supplementary) members.

Accounts below UID 1000 are usually system accounts for services (www-data, nginx, postgres) and have no real login shell.

id                      # your UID, primary group and all groups
id admin                # the same for another user
getent passwd admin     # the account's passwd line
groups admin
who                     # who is logged in now
last -n 10              # recent logins

Creating a user

useradd exists on every distribution. Pass -m to create a home directory and -s to set a shell; without them some systems create an account with no home and a minimal shell.

Check before you run this

  • Runs with administrator rights. Make sure you understand every line.
sudo useradd -m -s /bin/bash -c "Alex Admin" admin
sudo passwd admin

Debian and Ubuntu also ship adduser, a friendlier wrapper that asks for the password and details interactively: sudo adduser admin.

Groups

Each user has one primary group (by default a group with the same name) and any number of supplementary groups, which grant shared access, for example to a project directory or to the Docker socket.

Check before you run this

  • Runs with administrator rights. Make sure you understand every line.
sudo groupadd developers
sudo usermod -aG developers admin     # ADD to a group
sudo gpasswd -d admin developers      # remove from a group

Always use -aG, not just -G. usermod -G developers admin without -a replaces all of the user’s supplementary groups, which can silently remove their admin rights. Group changes apply at the next login; the user must log out and back in.

sudo: admin rights for named users

sudo runs one command as root after asking for your password, and records it in the system log. Who may use it is defined in /etc/sudoers and files in /etc/sudoers.d/. Distributions pre-configure an admin group:

  • Debian and Ubuntu: members of the sudo group. sudo usermod -aG sudo admin (or sudo adduser admin sudo).
  • RHEL, Rocky, AlmaLinux: members of the wheel group, through the line %wheel ALL=(ALL) ALL. sudo usermod -aG wheel admin.

On Debian, if you set a root password during installation, sudo may not be installed and no user is in the sudo group; install it as root with apt install sudo first.

Check before you run this

  • Runs with administrator rights. Make sure you understand every line.
sudo -l               # what am I allowed to run?
sudo -v               # refresh credentials / test that sudo works
sudo -i               # a root login shell, when you really need one

Custom sudo rules

Never edit /etc/sudoers with a normal editor: a syntax error can lock everyone out of sudo. Put your rules in a separate file in /etc/sudoers.d/ and edit it with visudo, which checks the syntax before saving:

Check before you run this

  • Runs with administrator rights. Make sure you understand every line.
sudo visudo -f /etc/sudoers.d/deploy
# let the deploy user restart one service without a password
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart myapp.service

A line starting with % refers to a group. Afterwards run sudo visudo -c to check the complete configuration including all included files. Avoid NOPASSWD: ALL for people; it turns a stolen session into instant root.

Locking and removing accounts

Check before you run this

  • Runs with administrator rights. Make sure you understand every line.
sudo usermod -L admin                  # lock the password
sudo usermod -s /usr/sbin/nologin admin # stop interactive logins
sudo chage -E 0 admin                  # expire the account entirely

A locked password does not stop SSH key logins; expiring the account or changing the shell does. Warning: sudo userdel -r admin deletes the account and its home directory and mail spool permanently. Check what is in the home directory and back it up first, or run userdel without -r to keep the files.

Official documentation

See also

  • 0178 Create a sudo user with an SSH key and disable password login A bash script that creates an admin user in the sudo or wheel group, installs their SSH public key and can switch… Advanced · How-to · Linux Script Keys & config · Users, sudo & hardening 15 Oct 2026
  • 0249 Set up and harden a fresh Linux server in one afternoon Take a new Ubuntu, Debian or Rocky/Alma server from first login to a safer baseline: sudo admin, SSH keys only, firewall, automatic… Beginner · Tutorial · Linux Article Networking & firewalls · Packages & updates · Users, sudo & hardening 15 Oct 2026

History

Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.

  1. Commitpedia +4,151 chars

Report a problem

Something wrong, unsafe or copied? Tell the editors.
What is wrong?