“Listen. And understand. That user account is out there. It can’t be bargained with. It can’t be reasoned with. It doesn’t feel pity... or remorse... or fear... and it absolutely will not stop... until you change its properties.” – Sarah Connor, probably??
If you’re learning Linux (like me!), you’ll soon face the need to modify user accounts; changing usernames, home directories, login shells, and more. In Linux, this is where our bare-metal-fisted friend usermod
enters the scene.
In this article, we’ll:
Create test users (because judgment day is coming)
Learn usermod options (the real power moves)
Play out Terminator-themed scenarios to reinforce the concepts
🔗 Table of Contents
- Step 1: Creating Test User Accounts
- Step 2: Meet usermod – The Cyberdyne Identity Shifter
- Scenario 1: Changing Username
- Scenario 2: Assigning a New Home
- Scenario 3: Joining a Resistance Group
- Scenario 4: Locking and Unlocking Users
- Scenario 5: Changing UID and GID
- Scenario 6: Setting an Expiration Date
- Scenario 7: Adding Comments
- Scenario 8: Changing the Login Shell
- Bonus: Full Account Termination
- Recap Table: usermod Options
- Final Thoughts
🔧 Step 1: Creating Test User Accounts (Skynet Recruits)
sudo useradd -m t800
sudo useradd -m sarah_connor
sudo useradd -m john_connor
-m
tells Linux to create a home directory at/home/username
.You can set passwords (optional) using:
sudo passwd t800
Verify:
getent passwd t800
🛠️ Step 2: Meet usermod
– The Cyberdyne Identity Shifter
usermod
is like the T-800 switching between sunglasses and leather jackets. It changes existing user account properties.
Basic syntax:
sudo usermod [options] username
Now, let’s walk through some real-world, Skynet-approved use cases.
🔄 Scenario 1: Changing Username (T-800 Gets a New Identity)
“I’m not T-800 anymore. Call me Uncle Bob.”
sudo usermod -l uncle_bob t800
-
-l
: (lowercase L) changes the login name.
The user’s home directory remains /home/t800
unless you move it.
To update the user and home directory in a single cmd try:
sudo usermod -l uncle_bob -d /home/uncle_bob -m t800
-d
: new home directory path.-m
: move contents from old to new home.
Boom. Identity fully swapped.
If you modified the user and now you need to move the directory contents, here's some additional steps:
✅ Step-by-Step: Move the Home Directory
- Create the new home directory and move the files:
sudo mv /home/t800 /home/uncle_bob
- Update the home directory for 'uncle_bob':
sudo usermod -d /home/uncle_bob uncle_bob
🏠 Scenario 2: Assigning a New Home (Sarah Goes Underground)
“There’s no fate but what we make... especially in a new home directory.”
sudo usermod -d /srv/safehouse -m sarah_connor
-d
: new home dir,-m
: move files.Useful when a user’s mission requires a secret base.
Sarah’s files are moved to /srv/safehouse.
Verify:
getent passwd sarah_connor
👥 Scenario 3: Adding to a Supplementary Group (John Joins the Resistance)
Let’s say you created a group called resistance
:
sudo groupadd resistance
Now, add John to it:
sudo usermod -aG resistance john_connor
-
-aG
: append the user to additional groups.
⚠️ Without
-a
, other groups get terminated.
- Verify group membership:
groups john_connor
Don’t forget: omitting -a
replaces all other supplementary groups!
🔐 Scenario 4: Locking and Unlocking Users (Shutdown Protocol)
“Skynet’s taken over. Lock down T-800!”
sudo usermod -L uncle_bob
-
-L
: lock the account (disables login by prepending!
to password hash).
Unlock it later:
sudo usermod -U uncle_bob
If you did not set passwords for your user accounts initially, you will need to set a password for the user account to see the difference between a locked and unlocked account.
sudo passwd uncle_bob
Verify Lock (notice the
!
before the encrypted password):
sudo grep 'uncle_bob' /etc/shadow
🧠 Scenario 5: Changing User ID (UID) or Group ID (GID)
Maybe you're syncing users across systems and need consistency.
sudo usermod -u 2001 sarah_connor
sudo usermod -g 3001 john_connor
-u
: changes the UID.-g
: changes the primary GID.
Be cautious. Changing UIDs/GIDs may affect file ownership. You’ll need to update file permissions with chown
.
If you receive an error that the group does not exist. Verify the GID of the group.
getent group resistance
⏳ Scenario 6: Setting an Expiration Date (User Self-Destruct)
“You’re terminated... on July 11, 2025.”
sudo usermod -e 2025-07-11 sarah_connor
-e
: set account expiration date (format: YYYY-MM-DD)After this date, login is disabled.
Check the setting:
sudo chage -l sarah_connor
💬 Scenario 7: Adding Comments (Mission Notes)
“This unit is reprogrammed. Protects John Connor.”
sudo usermod -c "Reprogrammed T-800, protector of John Connor" uncle_bob
-c
: adds a comment (usually stored in GECOS field)You can view it with:
getent passwd uncle_bob
🐚 Scenario 8: Changing the Login Shell (Give It a Voice)
“I need a bash interface to interact with humans.”
sudo usermod -s /bin/bash john_connor
🕵️♂️ Verify the New Shell
To confirm the user’s shell has been updated:
getent passwd john_connor
The last field in the output line will show the user’s current shell.
-
-s
: change login shell.
Common options: /bin/bash
, /sbin/nologin
, /bin/sh
, etc.
Why Change the User Shell?
The login shell defines what command-line interpreter the user gets when they log in. By default, many systems assign /bin/bash
, but in some cases, you might need to change it:
/bin/bash
: The classic and most common shell. Rich scripting capabilities. Great for developers and sysadmins./bin/sh
: A more minimal shell. Sometimes used for compatibility or lightweight environments./sbin/nologin
: Disables login for the user. Useful for service or system accounts that shouldn’t be interactive./bin/false
: Also prevents login, often used in restricted service accounts./usr/bin/zsh
: An advanced interactive shell with themes and plugins (often preferred by power users).
When Should You Change the Shell?
You might want to change a user’s shell when:
🔒 You're setting up a restricted service account and want to prevent login using
/sbin/nologin
or/bin/false
.💻 You're giving a user a preferred or enhanced shell, such as switching from Bash to Zsh.
🧪 You're building a custom scripting or training environment and want to enforce shell consistency.
📦 Bonus: Full Account Termination
“Hasta la vista, user.”
sudo userdel -r john_connor
-
-r
: remove home directory and mail spool.
If you received a message that
group john_connor
was not removed, you may force the group delete:
sudo groupdel -f john_connor
🎯 Recap Table: usermod
Options
Option | Description |
---|---|
-l |
Change login name |
-d |
Change user’s home directory |
-m |
Move contents to new home directory |
-aG |
Add user to additional group(s) |
-L |
Lock user account |
-U |
Unlock user account |
-u |
Change user ID (UID) |
-g |
Change primary group ID (GID) |
-e |
Set account expiration date |
-c |
Set or update comment (GECOS field) |
-s |
Set login shell |
🤖 Final Thoughts
Whether you’re fighting Skynet or managing dev users, mastering usermod
gives you the power to transform identities, control access, and apply governance across your Linux systems.
This article is your resistance log. Save it. Reference it. And most importantly... practice it.
“The future is not set. There's no fate but what we make for ourselves.” – John Connor
Especially if you’re using usermod
to rewrite it.
Top comments (0)