Bird
Raised Fist0
Bash Scriptingscripting~5 mins

User account management script in Bash Scripting

Choose your learning style10 modes available
Introduction

This script helps you add, delete, or list user accounts on a Linux system easily. It saves time and avoids mistakes when managing users.

When you need to create a new user quickly without typing many commands.
When you want to remove a user safely from the system.
When you want to see all current users on the system.
When managing multiple users and want a simple tool to automate tasks.
Syntax
Bash Scripting
#!/bin/bash

case "$1" in
  add)
    sudo useradd "$2"
    echo "User $2 added."
    ;;
  delete)
    sudo userdel "$2"
    echo "User $2 deleted."
    ;;
  list)
    cut -d: -f1 /etc/passwd
    ;;
  *)
    echo "Usage: $0 {add|delete|list} [username]"
    ;;
esac

The script uses case to handle different commands.

sudo is needed to run user management commands with proper permissions.

Examples
Adds a new user named alice.
Bash Scripting
./user_script.sh add alice
Deletes the user named bob.
Bash Scripting
./user_script.sh delete bob
Shows all users on the system.
Bash Scripting
./user_script.sh list
Sample Program

This script checks the first argument to decide what to do: add, delete, or list users. It also checks if the username is given when adding or deleting.

Bash Scripting
#!/bin/bash

case "$1" in
  add)
    if [ -z "$2" ]; then
      echo "Please provide a username to add."
      exit 1
    fi
    sudo useradd "$2" && echo "User $2 added."
    ;;
  delete)
    if [ -z "$2" ]; then
      echo "Please provide a username to delete."
      exit 1
    fi
    sudo userdel "$2" && echo "User $2 deleted."
    ;;
  list)
    cut -d: -f1 /etc/passwd
    ;;
  *)
    echo "Usage: $0 {add|delete|list} [username]"
    exit 1
    ;;
esac
OutputSuccess
Important Notes

Always run this script with proper permissions (usually with sudo) to manage users.

Be careful when deleting users to avoid losing important data.

You can extend this script to add passwords or other user settings.

Summary

This script automates adding, deleting, and listing users.

It uses simple commands and checks for required inputs.

Running with correct permissions is important for success.

Practice

(1/5)
1. What is the main purpose of a bash script that manages user accounts with commands like useradd and userdel?
easy
A. To change the system hostname
B. To automate adding, deleting, and listing users on the system
C. To update software packages automatically
D. To monitor network traffic

Solution

  1. Step 1: Understand the commands used

    The commands useradd and userdel are specifically for managing user accounts on Linux systems.
  2. Step 2: Identify the script's goal

    Since the script uses these commands, its main purpose is to automate user account management tasks like adding, deleting, and listing users.
  3. Final Answer:

    To automate adding, deleting, and listing users on the system -> Option B
  4. Quick Check:

    User management commands = automate user tasks [OK]
Hint: Look for user management commands like useradd/userdel [OK]
Common Mistakes:
  • Confusing user management with system updates
  • Thinking it changes network settings
  • Assuming it modifies system hostname
2. Which of the following is the correct syntax to add a new user named alice in a bash script?
easy
A. createuser alice
B. adduser alice
C. newuser alice
D. useradd alice

Solution

  1. Step 1: Recall the standard command for adding users

    The standard Linux command to add a user is useradd.
  2. Step 2: Match the command with the username

    Using useradd alice correctly adds a user named alice.
  3. Final Answer:

    useradd alice -> Option D
  4. Quick Check:

    Standard add user command = useradd [OK]
Hint: Remember: useradd is the standard command to add users [OK]
Common Mistakes:
  • Using adduser which may not be available on all systems
  • Typing createuser or newuser which are invalid commands
  • Confusing commands with other system utilities
3. What will be the output of this bash snippet if the script is run with root privileges?
if id "bob" &>/dev/null; then
  echo "User exists"
else
  echo "User does not exist"
fi
medium
A. User does not exist
B. User exists
C. Syntax error
D. Permission denied

Solution

  1. Step 1: Understand the id command usage

    The command id "bob" checks if user bob exists. If bob does not exist, it returns an error.
  2. Step 2: Analyze the if condition and output

    The script redirects errors to /dev/null, so if bob does not exist, the else branch runs, printing "User does not exist".
  3. Final Answer:

    User does not exist -> Option A
  4. Quick Check:

    id command fails = else branch runs [OK]
Hint: id command success means user exists; else means no user [OK]
Common Mistakes:
  • Assuming output shows error messages
  • Thinking permission issues cause output
  • Confusing command syntax with errors
4. Identify the error in this script snippet that tries to delete a user named charlie:
userdel charlie
if [ $? -eq 0 ]; then
  echo "User deleted"
else
  echo "Failed to delete user"
fi
medium
A. Missing sudo or root privileges to run userdel
B. Incorrect syntax for if statement
C. userdel command should be userremove
D. No error, script works fine

Solution

  1. Step 1: Check command permissions

    The userdel command requires root privileges. Running it without sudo or as root will fail.
  2. Step 2: Verify script syntax and commands

    The if statement syntax and command are correct, but permission issues cause failure.
  3. Final Answer:

    Missing sudo or root privileges to run userdel -> Option A
  4. Quick Check:

    userdel needs root = permission error if missing [OK]
Hint: Remember: userdel needs root or sudo to succeed [OK]
Common Mistakes:
  • Thinking userdel syntax is wrong
  • Using wrong command name like userremove
  • Ignoring permission requirements
5. You want to write a bash script that adds multiple users from a list in a file users.txt. Which script snippet correctly reads each username and adds the user, skipping empty lines?
hard
A. read users.txt | while read user; do useradd $user done
B. for user in $(cat users.txt); do useradd $user done
C. while read user; do [ -z "$user" ] && continue useradd "$user" done < users.txt
D. cat users.txt | while useradd; do echo $user done

Solution

  1. Step 1: Understand reading lines safely

    Using while read user reads each line safely, including spaces, and allows skipping empty lines.
  2. Step 2: Check skipping empty lines and adding users

    The condition [ -z "$user" ] && continue skips empty lines. Then useradd "$user" adds the user correctly.
  3. Final Answer:

    while read user; do [ -z "$user" ] && continue useradd "$user" done < users.txt -> Option C
  4. Quick Check:

    Safe line read + skip empty + add user = while read user; do [ -z "$user" ] && continue useradd "$user" done < users.txt [OK]
Hint: Use while read and check empty lines to avoid errors [OK]
Common Mistakes:
  • Using for loop with word splitting causing errors
  • Incorrect pipe usage with cat and while
  • Not skipping empty lines causing useradd errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard