Lab 5.1 - User Management
Objectives
By the end of this lab, you will be able to:
- Create users with useradd
- Modify users with usermod
- Delete users with userdel
- Manage passwords
- Understand system files (/etc/passwd, /etc/shadow)
Prerequisites
- Ubuntu 24.04 installed
- Sudo/root access
- Terminal open
Exercise 1: Create Users
Step 1: Basic useradd
# Create a simple user
sudo useradd testuser1
# Verify
id testuser1
cat /etc/passwd | grep testuser1
Step 2: useradd with Options
# Create with home directory
sudo useradd -m testuser2
# Create with specific shell
sudo useradd -m -s /bin/bash testuser3
# Create with primary group
sudo useradd -m -g users testuser4
# Create with specific UID
sudo useradd -m -u 1500 testuser5
Step 3: Create with adduser (Ubuntu)
# adduser is more interactive (recommended on Ubuntu)
sudo adduser testuser6
# Follow the prompts:
# - Password
# - Information (optional)
Exercise 2: Modify Users
Step 1: Basic usermod
# Change the shell
sudo usermod -s /bin/zsh testuser1
# Verify
grep testuser1 /etc/passwd
Step 2: Modify Home Directory
# Change home directory
sudo usermod -d /home/new-home testuser1
# Move content
sudo usermod -m -d /home/new-home testuser1
Step 3: Add to Groups
# Add to a secondary group
sudo usermod -aG sudo testuser1
# Verify
groups testuser1
id testuser1
Step 4: Lock/Unlock
# Lock an account
sudo usermod -L testuser1
# Verify
sudo passwd -S testuser1
# Unlock
sudo usermod -U testuser1
Exercise 3: Passwords
Step 1: Set a Password
# Set the password
sudo passwd testuser1
# Set without prompt
echo "testuser1:password" | sudo chpasswd
Step 2: Password Expiration
# Force change on next login
sudo passwd -e testuser1
# Set expiration
sudo chage -M 90 testuser1 # Expires in 90 days
# View information
sudo chage -l testuser1
Step 3: Password Policy
# View configuration
cat /etc/pam.d/common-password
# Install libpam-pwquality for strict policy
sudo apt install libpam-pwquality
# Configuration: /etc/security/pwquality.conf
Exercise 4: System Files
Step 1: /etc/passwd
# View the file
cat /etc/passwd
# Format: username:x:UID:GID:comment:home:shell
# Example: testuser1:x:1001:1001::/home/testuser1:/bin/bash
# Analyze
awk -F: '{print $1, $3, $7}' /etc/passwd
Step 2: /etc/shadow
# View (requires sudo)
sudo cat /etc/shadow
# Format: username:password_hash:last_change:min:max:warn:inactive:expire
# View user information
sudo grep testuser1 /etc/shadow
Step 3: /etc/group
# View groups
cat /etc/group
# Format: groupname:x:GID:members
# View user's groups
groups testuser1
id testuser1
Exercise 5: Delete Users
Step 1: Basic userdel
# Delete a user (keeps home)
sudo userdel testuser1
# Verify
id testuser1 # Should no longer exist
ls -la /home/ # Home still there
Step 2: Delete with Home
# Delete user and home
sudo userdel -r testuser2
# Verify
ls -la /home/ # Home deleted
Step 3: Delete with deluser (Ubuntu)
# deluser is safer (Ubuntu)
sudo deluser testuser3
# Delete with home
sudo deluser --remove-home testuser4
Exercise 6: Complete Practice
Step 1: Create a Developer User
# Create with all options
sudo useradd -m -s /bin/bash -G sudo,developers -c "Developer" devuser
# Set password
sudo passwd devuser
# Verify
id devuser
groups devuser
Step 2: Creation Script
# Script to create a user
cat > create-user.sh << 'EOF'
#!/bin/bash
USERNAME=$1
FULLNAME=$2
GROUPS=$3
if [ -z "$USERNAME" ]; then
echo "Usage: $0 username [fullname] [groups]"
exit 1
fi
# Create user
sudo useradd -m -s /bin/bash -c "$FULLNAME" "$USERNAME"
# Add to groups if specified
if [ -n "$GROUPS" ]; then
sudo usermod -aG "$GROUPS" "$USERNAME"
fi
# Set password
sudo passwd "$USERNAME"
echo "User $USERNAME created"
id "$USERNAME"
EOF
chmod +x create-user.sh
# Use
./create-user.sh "newuser" "New User" "sudo,users"
Verification
Checklist
Verify that you can:
- Create users (useradd, adduser)
- Modify users (usermod)
- Manage passwords (passwd, chage)
- Understand /etc/passwd and /etc/shadow
- Delete users (userdel, deluser)
- Manage user groups
Reflection Questions
-
What is the difference between useradd and adduser?
- useradd: Low level, less interactive
- adduser: High level, more user-friendly (Ubuntu)
-
Why is /etc/shadow separate from /etc/passwd?
- Security: /etc/passwd is readable by all
- /etc/shadow is protected (hashed passwords)
-
When to use userdel -r?
- When you want to completely remove the user
- Warning: also deletes the home directory
Next Steps
- Lab 5.2: Group Management
- Lab 5.3: Advanced Permissions
- Chapter 5.1: User Management
Lab created on: December 2024 - Tested on Ubuntu 24.04