Day 3 of my Bash Blaze challenge has arrived, and it’s packed with user management commands. It was all fun and games until I realized I was the Bash overlord controlling accounts on my system. Here’s how I conquered this challenge and wrote a script so slick that even my cat looked impressed (or maybe it was just yawning).
Challenge Overview: User Management Bash Script
The task: create a Bash script that handles user accounts like a pro—or at least like a DevOps engineer trying to impress HR.😀
The Game Plan:
- Account Creation: Add users and make sure they’re not already on the list (because cloning is creepy).
- Account Deletion: Remove users (with their home directories for bonus cleanup points).
- Password Reset: Reset passwords while pretending I’m a hacker in a movie montage.
- User Listing: Display all users like it’s a roll call at school.
- Help Command: Because every good script should offer unsolicited advice.
The Code That Makes the Magic Happen
#!/bin/bash
<<note
Usage: ./user_management.sh [Options]
note
# Displaying usage information like a helpful Bash superhero
function display_usage {
echo "Usage: ./user_management.sh [Options]"
echo "Options:"
echo "-c, --create Create a new user account."
echo "-d, --delete Delete an existing user account."
echo "-r, --reset Reset password for an existing user account."
echo "-l, --list List all user accounts on the system."
echo "-h, --help Display this help and exit."
}
# Creating a new user account (because why not play God?)
function create_user {
read -p "Enter the new username: " new_user
if id "$new_user" &>/dev/null; then
echo "Error: The username '$new_user' already exists. Maybe try 'user2.0'?"
exit 1
else
read -sp "Enter password for $new_user: " password
sudo useradd -m -p "$(openssl passwd -1 "$password")" "$new_user"
echo -e "\nUser '$new_user' created successfully. They owe you big time."
fi
}
# Deleting a user account (peace out, user!)
function delete_user {
read -p "Enter the username to delete: " username
if id "$username" &>/dev/null; then
sudo userdel -r "$username"
echo "User '$username' deleted. Gone, but not forgotten (unless you use rm -rf)."
else
echo "Error: The username '$username' does not exist. Did they ghost us?"
fi
}
# Resetting passwords (because 'password123' is so last season)
function reset_passwd {
read -p "Enter the username to reset password for: " reset_user
if id "$reset_user" &>/dev/null; then
read -sp "Enter new password for '$reset_user': " password
echo "$reset_user:$password" | sudo chpasswd
echo -e "\nPassword for '$reset_user' reset. Use wisely, young Padawan."
else
echo "Error: '$reset_user' not found. Check your spelling or your luck."
fi
}
# Listing user accounts (because we're nosy)
function list_users {
echo "Here are the current VIPs (Very Important Password-holders):"
awk -F: '{ print "- " $1 " (UID: " $3 ")" }' /etc/passwd
}
# Script begins here
if [ $# -eq 0 ] || [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
display_usage
exit 0
fi
while [ $# -gt 0 ]; do
case "$1" in
-c | --create)
create_user
;;
-d | --delete)
delete_user
;;
-r | --reset)
reset_passwd
;;
-l | --list)
list_users
;;
*)
echo "Error: Invalid option '$1'. Try '--help' for better luck."
exit 1
;;
esac
shift
done
Key Bash Commands for User Management
1. Creating Users
sudo useradd -m username
Explanation: The -m flag ensures a home directory is created for the new user. This simple command is a must for adding users quickly.
2. Setting Passwords
sudo passwd username
This command lets you set or change a password for a user, essential for maintaining secure access.
3. Deleting Users
sudo userdel -r username
The -r
flag removes the user's home directory along with their profile, ensuring a complete cleanup.
4. Adding Users to Groups
sudo usermod -aG groupname username
The -aG
option appends the user to an existing group without removing them from other groups.
Pro Tip:
Always double-check user permissions with:
groups username
This helps you verify that the user is part of the correct groups and has the appropriate access.
Challenges Faced and How I Overcame Them
During Day 3, I encountered scenarios where user permissions needed to be fine-tuned for specific scripts. Here’s how I tackled these challenges:
Error: User already exists
Solution: Use id username to check user existence before creation.Permissions Denied
Solution: Apply chmod and chown commands to fix permissions on directories.
Real-World Application
User management is not just theoretical; it plays a significant role in CI/CD pipelines, ensuring only authorized users can deploy code or make changes. Integrating these Bash skills into your daily tasks can simplify user access management and enhance security protocols.
Conclusion
Day 3 of my Bash Blaze challenge was both insightful and practical. Learning these user management commands has empowered me to be more confident in my DevOps journey. As I move on to Day 4, which promises even more exciting concepts, I invite you to follow along and join me in mastering Bash scripting.
Top comments (0)