User Management
Linux is multi-user. Every person, service, and application can have its own account with its own permissions.
Understanding Users
Every user has:
- UID - Unique ID number (0 = root)
- GID - Primary group ID
- Home directory - Usually
/home/username - Shell - Default command interpreter
View All Users
Format: username:password:UID:GID:info:home:shell
The x means password is in /etc/shadow (encrypted).
Create a User
Or use the interactive version:
adduser vs useradd
adduser is friendlier (interactive, creates home dir). useradd is lower-level (needs flags). On Debian/Ubuntu, prefer adduser.
Set/Change Password
Force password change on next login:
Modify User
Use -aG for Groups
usermod -G docker replaces all groups. usermod -aG docker appends to existing groups. The -a is critical!
Delete User
Or interactive:
Lock/Unlock Account
Or use usermod:
Switch User
Practical: Create Deploy User
#!/bin/bash
# Create a deploy user for applications
# Create user with no password login
sudo useradd -m -s /bin/bash deploy
# Add to relevant groups
sudo usermod -aG www-data deploy
sudo usermod -aG docker deploy
# Set up SSH key access instead of password
sudo mkdir -p /home/deploy/.ssh
sudo touch /home/deploy/.ssh/authorized_keys
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keys
# Disable password login
sudo passwd -l deploy
echo "Deploy user created. Add SSH public keys to /home/deploy/.ssh/authorized_keys"
What does 'usermod -aG docker john' do?
Quick Reference
| Command | Purpose |
|---|---|
useradd -m user | Create user |
adduser user | Create user (interactive) |
passwd user | Set password |
usermod -aG group user | Add to group |
userdel -r user | Delete user + home |
passwd -l user | Lock account |
su - user | Switch user |
Key Takeaways
adduseris friendlier thanuseradd- Always use
-aG(append) when adding to groups passwd -llocks accounts without deleting- Service accounts often use
/usr/sbin/nologinshell - Create dedicated users for applications
- Use SSH keys instead of passwords when possible
Next: managing groups.