From 80fdf281393e396f0b40787796ee428016a17a5d Mon Sep 17 00:00:00 2001 From: Ryan Hamilton Date: Thu, 3 Jul 2025 18:19:18 +0000 Subject: [PATCH] Update create-user.sh --- create-user.sh | 39 ++++++++++++++------------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/create-user.sh b/create-user.sh index 1c75d88..b923998 100644 --- a/create-user.sh +++ b/create-user.sh @@ -3,26 +3,21 @@ echo "== Flexible User Creation Script ==" echo -# Prompt for username read -p "Username to create (required): " USERNAME if [[ -z "$USERNAME" ]]; then echo "Error: Username is required." exit 1 fi -# Prompt for public key read -p "Paste the SSH public key: " PUBKEY if [[ -z "$PUBKEY" ]]; then echo "Error: Public key is required." exit 1 fi -# Prompt for optional groups read -p "Comma-separated groups to add (e.g. sudo,docker): " GROUPS -GROUPS=$(echo "$GROUPS" | tr -d '[:space:]') # remove all whitespace -IFS=',' read -ra GROUP_ARRAY <<< "$GROUPS" -# Check if user exists +# Create the user if not exists if id "$USERNAME" &>/dev/null; then echo "[*] User '$USERNAME' already exists. Skipping creation." else @@ -30,27 +25,22 @@ else useradd -m -s /bin/bash "$USERNAME" fi -# Add user to groups -for group in "${GROUP_ARRAY[@]}"; do - if [[ -n "$group" ]]; then - if getent group "$group" > /dev/null; then - echo "[+] Adding $USERNAME to group: $group" - usermod -aG "$group" "$USERNAME" - else - echo "[!] Warning: Group '$group' does not exist. Skipping." - fi - fi -done +# Add user to groups if any were entered +if [[ -n "$GROUPS" ]]; then + echo "[+] Adding $USERNAME to groups: $GROUPS" + usermod -aG "$GROUPS" "$USERNAME" +fi -# Setup SSH access -AUTHORIZED_KEYS="/home/$USERNAME/.ssh/authorized_keys" -mkdir -p "$(dirname "$AUTHORIZED_KEYS")" +# Setup SSH +SSH_DIR="/home/$USERNAME/.ssh" +AUTHORIZED_KEYS="$SSH_DIR/authorized_keys" +mkdir -p "$SSH_DIR" touch "$AUTHORIZED_KEYS" -chmod 700 "$(dirname "$AUTHORIZED_KEYS")" +chmod 700 "$SSH_DIR" chmod 600 "$AUTHORIZED_KEYS" -chown -R "$USERNAME:$USERNAME" "/home/$USERNAME/.ssh" +chown -R "$USERNAME:$USERNAME" "$SSH_DIR" -# Add key if not already present +# Add SSH key if not present if grep -Fxq "$PUBKEY" "$AUTHORIZED_KEYS"; then echo "[*] Public key already present. Skipping." else @@ -58,8 +48,7 @@ else echo "[+] Public key added." fi -# Done echo echo "[✓] User '$USERNAME' setup complete." -[[ ${#GROUP_ARRAY[@]} -gt 0 ]] && echo "[✓] Groups added: ${GROUP_ARRAY[*]}" +[[ -n "$GROUPS" ]] && echo "[✓] Groups added: $GROUPS" echo "[✓] SSH access configured."