diff --git a/create-user.sh b/create-user.sh index 37ab3f2..8a9e2d8 100644 --- a/create-user.sh +++ b/create-user.sh @@ -1,57 +1,74 @@ #!/bin/bash echo "== Flexible User Creation Script ==" -echo -read -p "Username to create (required): " USERNAME /dev/null; then - echo "[*] User '$USERNAME' already exists. Skipping creation." +# Create user if needed +if id "$NEWUSER_NAME" &>/dev/null; then + echo "[*] User '$NEWUSER_NAME' already exists. Skipping creation." else - echo "[+] Creating user: $USERNAME" - useradd -m -s /bin/bash "$USERNAME" + echo "[+] Creating user: $NEWUSER_NAME" + useradd -m -s /bin/bash "$NEWUSER_NAME" fi -# Add user to groups if any were entered -if [[ -n "$GROUPS" ]]; then - echo "[+] Adding $USERNAME to groups: $GROUPS" - usermod -aG "$GROUPS" "$USERNAME" +# Add to groups (if provided) +if [[ -n "$NEWUSER_GROUPS" ]]; then + echo "[+] Adding $NEWUSER_NAME to groups: $NEWUSER_GROUPS" + usermod -aG "$NEWUSER_GROUPS" "$NEWUSER_NAME" fi -# Setup SSH -SSH_DIR="/home/$USERNAME/.ssh" -AUTHORIZED_KEYS="$SSH_DIR/authorized_keys" -mkdir -p "$SSH_DIR" -touch "$AUTHORIZED_KEYS" -chmod 700 "$SSH_DIR" -chmod 600 "$AUTHORIZED_KEYS" -chown -R "$USERNAME:$USERNAME" "$SSH_DIR" +# Optional: ask for passwordless sudo if 'sudo' is included +if [[ "$NEWUSER_GROUPS" == *sudo* ]]; then + printf "Allow passwordless sudo for this user? [y/N]: " + IFS= read -r NEWUSER_SUDO_NOPASS "/etc/sudoers.d/$NEWUSER_NAME" + chmod 440 "/etc/sudoers.d/$NEWUSER_NAME" + else + echo "[*] Skipping passwordless sudo." + fi +fi -# Add SSH key if not present -if grep -Fxq "$PUBKEY" "$AUTHORIZED_KEYS"; then +# Setup SSH access +NEWUSER_HOME="/home/$NEWUSER_NAME" +NEWUSER_SSH_DIR="$NEWUSER_HOME/.ssh" +NEWUSER_AUTH_KEYS="$NEWUSER_SSH_DIR/authorized_keys" + +mkdir -p "$NEWUSER_SSH_DIR" +touch "$NEWUSER_AUTH_KEYS" +chmod 700 "$NEWUSER_SSH_DIR" +chmod 600 "$NEWUSER_AUTH_KEYS" +chown -R "$NEWUSER_NAME:$NEWUSER_NAME" "$NEWUSER_SSH_DIR" + +# Add key if not already present +if grep -Fxq "$NEWUSER_PUBKEY" "$NEWUSER_AUTH_KEYS"; then echo "[*] Public key already present. Skipping." else - echo "$PUBKEY" >> "$AUTHORIZED_KEYS" + echo "$NEWUSER_PUBKEY" >> "$NEWUSER_AUTH_KEYS" echo "[+] Public key added." fi echo -echo "[✓] User '$USERNAME' setup complete." -[[ -n "$GROUPS" ]] && echo "[✓] Groups added: $GROUPS" +echo "[✓] User '$NEWUSER_NAME' setup complete." +[[ -n "$NEWUSER_GROUPS" ]] && echo "[✓] Groups added: $NEWUSER_GROUPS" echo "[✓] SSH access configured."