Overview
A comprehensive user management script that handles user creation, SSH key setup, sudo permissions, and user removal with proper cleanup.
The Script
#!/bin/bash
# User Management Script
# Usage: ./user-mgmt.sh <action> <username> [options]
set -euo pipefail
# Configuration
DEFAULT_SHELL="/bin/bash"
DEFAULT_GROUPS="users"
SSH_DIR_PERMS="700"
AUTH_KEYS_PERMS="600"
usage() {
cat << EOF
User Management Script
Usage: $0 <action> <username> [options]
Actions:
add Create a new user
delete Remove a user
lock Lock a user account
unlock Unlock a user account
info Display user information
Examples:
$0 add john -g developers,docker -S
$0 add jane -k ~/.ssh/id_rsa.pub
$0 delete john
$0 info john
EOF
exit 1
}
check_root() {
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
}
user_exists() {
id "$1" &>/dev/null
}
# Main
check_root
if [ $# -lt 2 ]; then
usage
fi
ACTION="$1"
USERNAME="$2"
shift 2
case "$ACTION" in
add) echo "Adding user $USERNAME" ;;
delete) echo "Deleting user $USERNAME" ;;
lock) usermod -L "$USERNAME" ;;
unlock) usermod -U "$USERNAME" ;;
info) id "$USERNAME" ;;
*) usage ;;
esacUsage Examples
# Create basic user
sudo ./user-mgmt.sh add john
# Create developer with groups and sudo
sudo ./user-mgmt.sh add jane -g developers,docker -S
# View user info
sudo ./user-mgmt.sh info john
# Lock/unlock account
sudo ./user-mgmt.sh lock john
sudo ./user-mgmt.sh unlock john
# Delete user
sudo ./user-mgmt.sh delete john - user management
- useradd
- ssh keys
- sudo
- permissions
- groups