The essentials

Quick reference

One focused task per row. Jump to the related section for complete, working examples.

UseSyntaxExamples
Inspect current identityidView examples
Inspect one userid -- deployView examples
Resolve a passwd entrygetent passwd deployView examples
Resolve a groupgetent group appopsView examples
Create a local groupsudo groupadd -- appopsView examples
Create a home-backed usersudo useradd --create-home --shell /bin/bash -- deployView examples
Set a password interactivelysudo passwd deployView examples
Append a supplementary groupsudo usermod --append --groups appops -- deployView examples
Inspect password agingsudo chage --list deployView examples
Lock password authenticationsudo usermod --lock -- deployView examples
Expire immediatelysudo usermod --expiredate 1 -- deployView examples
Delete after reviewsudo userdel --remove -- deployView examples

Linux authorization uses numeric UIDs and GIDs; names are resolved through configured identity services. Inspect with getent and id before changes, preserve the existing supplementary-group list when appropriate, and lock or expire an account while ownership and service dependencies are investigated before deletion.

Step by step

Detailed examples

01

Resolve names through the configured identity stack

getent respects NSS configuration and may return local, directory, or other identities; direct parsing of /etc/passwd misses those sources. Numeric ownership remains after an identity is removed, so record UID/GID and source. Group membership may require a new login session to appear.

Audit one identity
getent passwd deploy
getent group appops
id -- deploy
getent initgroups deploy
Back to quick reference ↑
02

Review defaults before creating local identities

useradd behavior depends on login.defs and distribution defaults. Choose home, primary group, supplementary groups, shell, and expiry explicitly. passwd reads interactively; never place plaintext passwords on the command line or in process-visible scripts.

Inspect defaults, then create
sudo useradd --defaults
getent group appops || sudo groupadd -- appops
sudo useradd --create-home --shell /bin/bash --gid appops -- deploy
sudo passwd deploy

Note: These commands change the local identity database; verify the target host and policy first.

Back to quick reference ↑
03

Append memberships and inspect the result

usermod -G replaces the entire supplementary list unless combined with -a, a common source of accidental privilege loss. Primary and supplementary groups serve different purposes. Password aging does not necessarily govern SSH keys or external identity providers.

Add one group safely
id -- deploy
sudo usermod --append --groups appops -- deploy
id -- deploy
sudo chage --list deploy
Back to quick reference ↑
04

Contain access before irreversible deletion

Password locking alone does not stop SSH keys, tokens, cron jobs, services, or active sessions. Expire or lock according to policy, stop dependent work, locate files by numeric UID, transfer authorized ownership, and only then delete. Reusing the same name later creates a different UID.

Record and contain an account
id -- deploy
sudo find / -xdev -uid "$(id -u deploy)" -print
sudo usermod --lock -- deploy
sudo usermod --expiredate 1 -- deploy

Note: The filesystem scan can be expensive; narrow it to relevant filesystems in production.

Back to quick reference ↑

Sources and further reading

References

Authoritative documentation used to verify and expand this cheat sheet.

  1. Linux man-pages projectuseradd(8)man7.org
  2. Linux man-pages projectusermod(8)man7.org
  3. Linux man-pages projectgetent(1)man7.org
  4. Linux man-pages projectpasswd(1)man7.org

Help us improve

Found a typo or missing example?

Tell us what would make this cheat sheet clearer, more complete, or more useful.

Share feedback