HxHippy

User Management Script

Streamline user creation, modification, and deletion with proper permissions, SSH keys, and sudo access.

Last updated: 2024-12-15

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 ;;
esac

Usage 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
intermediate System Administration Updated 2024-12-15
  • user management
  • useradd
  • ssh keys
  • sudo
  • permissions
  • groups