Update create-user.sh

This commit is contained in:
2025-07-03 18:17:30 +00:00
parent ffe4491dc0
commit 63745fd422

View File

@@ -1,52 +1,65 @@
#!/bin/bash #!/bin/bash
echo "🔐 Flexible User Creation Script" echo "== Flexible User Creation Script =="
echo "-------------------------------" echo
# Prompt for username # Prompt for username
read -p "👤 Enter 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 # 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 # Prompt for optional groups
read -p "👥 Enter 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" IFS=',' read -ra GROUP_ARRAY <<< "$GROUPS"
# Create user # Check if user exists
echo "" if id "$USERNAME" &>/dev/null; then
echo "📋 Creating user: $USERNAME" echo "[*] User '$USERNAME' already exists. Skipping creation."
useradd -m -s /bin/bash "$USERNAME" else
echo "[+] Creating user: $USERNAME"
# Add user to groups if any provided useradd -m -s /bin/bash "$USERNAME"
if [[ -n "$GROUPS" ]]; then
for group in "${GROUP_ARRAY[@]}"; do
group_trimmed=$(echo "$group" | xargs) # trim spaces
if [[ -n "$group_trimmed" ]]; then
echo " Adding $USERNAME to group: $group_trimmed"
usermod -aG "$group_trimmed" "$USERNAME"
fi
done
fi fi
# Set up SSH # Add user to groups
echo "🔒 Setting up SSH access..." for group in "${GROUP_ARRAY[@]}"; do
mkdir -p /home/$USERNAME/.ssh if [[ -n "$group" ]]; then
echo "$PUBKEY" > /home/$USERNAME/.ssh/authorized_keys if getent group "$group" > /dev/null; then
chmod 700 /home/$USERNAME/.ssh echo "[+] Adding $USERNAME to group: $group"
chmod 600 /home/$USERNAME/.ssh/authorized_keys usermod -aG "$group" "$USERNAME"
chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh else
echo "[!] Warning: Group '$group' does not exist. Skipping."
fi
fi
done
# Setup SSH access
AUTHORIZED_KEYS="/home/$USERNAME/.ssh/authorized_keys"
mkdir -p "$(dirname "$AUTHORIZED_KEYS")"
touch "$AUTHORIZED_KEYS"
chmod 700 "$(dirname "$AUTHORIZED_KEYS")"
chmod 600 "$AUTHORIZED_KEYS"
chown -R "$USERNAME:$USERNAME" "/home/$USERNAME/.ssh"
# Add key if not already present
if grep -Fxq "$PUBKEY" "$AUTHORIZED_KEYS"; then
echo "[*] Public key already present. Skipping."
else
echo "$PUBKEY" >> "$AUTHORIZED_KEYS"
echo "[+] Public key added."
fi
# Done # Done
echo "" echo
echo " User '$USERNAME' created." echo "[✓] User '$USERNAME' setup complete."
[[ -n "$GROUPS" ]] && echo "📦 Groups added: ${GROUP_ARRAY[*]}" [[ ${#GROUP_ARRAY[@]} -gt 0 ]] && echo "[✓] Groups added: ${GROUP_ARRAY[*]}"
echo "🎉 SSH key installed and permissions secured." echo "[✓] SSH access configured."