Update create-user.sh

This commit is contained in:
2025-07-03 18:19:18 +00:00
parent 63745fd422
commit 80fdf28139

View File

@@ -3,26 +3,21 @@
echo "== Flexible User Creation Script ==" echo "== Flexible User Creation Script =="
echo echo
# Prompt for username
read -p "Username to create (required): " USERNAME read -p "Username to create (required): " USERNAME
if [[ -z "$USERNAME" ]]; then if [[ -z "$USERNAME" ]]; then
echo "Error: Username is required." echo "Error: Username is required."
exit 1 exit 1
fi fi
# Prompt for public key
read -p "Paste the SSH public key: " PUBKEY read -p "Paste the SSH public key: " PUBKEY
if [[ -z "$PUBKEY" ]]; then if [[ -z "$PUBKEY" ]]; then
echo "Error: Public key is required." echo "Error: Public key is required."
exit 1 exit 1
fi fi
# Prompt for optional groups
read -p "Comma-separated groups to add (e.g. sudo,docker): " 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 if id "$USERNAME" &>/dev/null; then
echo "[*] User '$USERNAME' already exists. Skipping creation." echo "[*] User '$USERNAME' already exists. Skipping creation."
else else
@@ -30,27 +25,22 @@ else
useradd -m -s /bin/bash "$USERNAME" useradd -m -s /bin/bash "$USERNAME"
fi fi
# Add user to groups # Add user to groups if any were entered
for group in "${GROUP_ARRAY[@]}"; do if [[ -n "$GROUPS" ]]; then
if [[ -n "$group" ]]; then echo "[+] Adding $USERNAME to groups: $GROUPS"
if getent group "$group" > /dev/null; then usermod -aG "$GROUPS" "$USERNAME"
echo "[+] Adding $USERNAME to group: $group" fi
usermod -aG "$group" "$USERNAME"
else
echo "[!] Warning: Group '$group' does not exist. Skipping."
fi
fi
done
# Setup SSH access # Setup SSH
AUTHORIZED_KEYS="/home/$USERNAME/.ssh/authorized_keys" SSH_DIR="/home/$USERNAME/.ssh"
mkdir -p "$(dirname "$AUTHORIZED_KEYS")" AUTHORIZED_KEYS="$SSH_DIR/authorized_keys"
mkdir -p "$SSH_DIR"
touch "$AUTHORIZED_KEYS" touch "$AUTHORIZED_KEYS"
chmod 700 "$(dirname "$AUTHORIZED_KEYS")" chmod 700 "$SSH_DIR"
chmod 600 "$AUTHORIZED_KEYS" 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 if grep -Fxq "$PUBKEY" "$AUTHORIZED_KEYS"; then
echo "[*] Public key already present. Skipping." echo "[*] Public key already present. Skipping."
else else
@@ -58,8 +48,7 @@ else
echo "[+] Public key added." echo "[+] Public key added."
fi fi
# Done
echo echo
echo "[✓] User '$USERNAME' setup complete." echo "[✓] User '$USERNAME' setup complete."
[[ ${#GROUP_ARRAY[@]} -gt 0 ]] && echo "[✓] Groups added: ${GROUP_ARRAY[*]}" [[ -n "$GROUPS" ]] && echo "[✓] Groups added: $GROUPS"
echo "[✓] SSH access configured." echo "[✓] SSH access configured."