Skip to main content

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​

  1. What is the difference between useradd and adduser?

    • useradd: Low level, less interactive
    • adduser: High level, more user-friendly (Ubuntu)
  2. Why is /etc/shadow separate from /etc/passwd?

    • Security: /etc/passwd is readable by all
    • /etc/shadow is protected (hashed passwords)
  3. 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