- Overview
- User Account Types
- Creating Users
- Managing Passwords
- Modifying Users
- Deleting Users
- Group Management
- User Home Directories
- User Permissions
- Account Policies & Expiry
- User Info Files
- Shell Management
- Socket Management
- Best Practices
- Common Commands Cheat Sheet
Linux user management involves creating, modifying, and removing user accounts and groups. Each user has a unique User ID (UID), home directory, default shell, and optional group memberships.
Type |
Description |
Root |
Superuser with full system access |
System |
Used by services/processes |
Regular |
Normal human users |
Pseudo Users |
No login access, used by daemons |
sudo useradd username
sudo useradd -m -s /bin/bash -G sudo username
Option |
Description |
-m |
Create home directory |
-s |
Set default shell |
-G |
Add to supplementary groups |
sudo useradd -m -s /bin/zsh -G developers alice
sudo passwd username
sudo chage -d 0 username
sudo usermod -l newname oldname
sudo usermod -d /new/home -m username
sudo usermod -aG groupname username
sudo userdel username
¶ Remove User and Home Directory
sudo userdel -r username
sudo groupadd groupname
sudo groupdel groupname
sudo gpasswd -a username groupname
sudo gpasswd -d username groupname
groups username
- Default location:
/home/username
- Set custom home dir on creation:
sudo useradd -m -d /custom/home username
- Copy default skeleton files from
/etc/skel/
- Controlled via file ownership and permissions.
- Change ownership:
sudo chown username:groupname file
chmod 755 file
chage -l username
sudo chage -E YYYY-MM-DD username
sudo usermod -L username # Lock
sudo usermod -U username # Unlock
File |
Purpose |
/etc/passwd |
User account info |
/etc/shadow |
Encrypted passwords & policies |
/etc/group |
Group definitions |
/etc/login.defs |
Default settings for user accounts |
/etc/skel/ |
Skeleton directory for new users |
cat /etc/shells
- Change a user's default shell:
sudo chsh -s /bin/zsh username
- Set shell during user creation:
sudo useradd -s /bin/bash username
- Common Shells:
/bin/bash
/bin/zsh
/bin/sh
/usr/bin/fish
ss -tuln
- Detailed socket info (process + ports):
sudo ss -tulnp
watch ss -tuln
- Use
netstat
as alternative (legacy):
sudo netstat -tulnp
- View UNIX domain sockets:
ss -x
- Disable root login via SSH
- Use
sudo
instead of direct root
- Create system users for services
- Lock unused accounts
- Regularly audit users and groups
¶ ⚡ Common Commands Cheat Sheet
Task |
Command |
Create user |
sudo useradd -m username |
Delete user + home |
sudo userdel -r username |
Set password |
sudo passwd username |
Add to group |
sudo usermod -aG group user |
List groups for user |
groups username |
Show account aging |
chage -l username |
Lock user account |
sudo usermod -L username |
Change default shell |
chsh -s /bin/bash username |
List open sockets |
ss -tulnp |