Enhance user prompts in setup script for existing user handling during additional user creation. Update SSH key setup process to reflect selected users, improving clarity in user feedback and logging. Streamline checks for user existence and adjust logging for SSH key management.

This commit is contained in:
2025-09-07 01:25:34 +01:00
parent dc05b7f376
commit a25d98fdeb

View File

@@ -90,8 +90,16 @@ ask_additional_user() {
echo -e "${RED}Username cannot be the same as sysadmin user. Please choose a different name.${NC}" echo -e "${RED}Username cannot be the same as sysadmin user. Please choose a different name.${NC}"
continue continue
elif id "$username_input" &>/dev/null; then elif id "$username_input" &>/dev/null; then
echo -e "${RED}User '$username_input' already exists. Please choose a different name.${NC}" echo -e "${YELLOW}User '$username_input' already exists.${NC}"
read -p "Continue with existing user '$username_input'? (y/N): " continue_existing
if [[ "$continue_existing" =~ ^[Yy]$ ]]; then
ADDITIONAL_USER="$username_input"
log "Will use existing user: $ADDITIONAL_USER"
break
else
echo "Please choose a different name."
continue continue
fi
else else
ADDITIONAL_USER="$username_input" ADDITIONAL_USER="$username_input"
log "Will create additional user: $ADDITIONAL_USER" log "Will create additional user: $ADDITIONAL_USER"
@@ -138,28 +146,37 @@ ask_firewall_preferences() {
# Ask user about SSH key setup for created users # Ask user about SSH key setup for created users
ask_ssh_key_setup() { ask_ssh_key_setup() {
# Check if any users were created # Check if any users were created or selected
local users_created=() local users_for_ssh=()
if [[ "$SYSADMIN_USER_CREATED" == "yes" ]]; then if [[ "$SYSADMIN_USER_CREATED" == "yes" ]]; then
users_created+=("$SYSADMIN_USER") users_for_ssh+=("$SYSADMIN_USER")
fi fi
if [[ "$ADDITIONAL_USER_CREATED" == "yes" ]]; then if [[ "$CREATE_ADDITIONAL_USER" == "yes" && -n "$ADDITIONAL_USER" ]]; then
users_created+=("$ADDITIONAL_USER") users_for_ssh+=("$ADDITIONAL_USER")
fi fi
# Only prompt if users were actually created # Only prompt if users were created or selected
if [[ ${#users_created[@]} -eq 0 ]]; then if [[ ${#users_for_ssh[@]} -eq 0 ]]; then
return return
fi fi
echo "" echo ""
echo -e "${BLUE}=== SSH Key Setup ===${NC}" echo -e "${BLUE}=== SSH Key Setup ===${NC}"
echo "Users created during setup: ${users_created[*]}" if [[ "$SYSADMIN_USER_CREATED" == "yes" ]]; then
echo "Users created during setup: $SYSADMIN_USER"
fi
if [[ "$CREATE_ADDITIONAL_USER" == "yes" && -n "$ADDITIONAL_USER" ]]; then
if [[ "$ADDITIONAL_USER_CREATED" == "yes" ]]; then
echo "Additional user created: $ADDITIONAL_USER"
else
echo "Additional user selected: $ADDITIONAL_USER (existing)"
fi
fi
echo "You can add your SSH public key for easier login." echo "You can add your SSH public key for easier login."
echo "" echo ""
read -p "Add your SSH public key to created users? (Y/n): " add_key_choice read -p "Add your SSH public key to selected users? (Y/n): " add_key_choice
if [[ "$add_key_choice" =~ ^[Nn]$ ]]; then if [[ "$add_key_choice" =~ ^[Nn]$ ]]; then
log "SSH key setup skipped" log "SSH key setup skipped"
@@ -169,9 +186,9 @@ ask_ssh_key_setup() {
local user_public_key="" local user_public_key=""
# Special case for user "sergio" - offer pre-defined key # Special case for user "sergio" - offer pre-defined key
if [[ " ${users_created[*]} " =~ " sergio " ]]; then if [[ " ${users_for_ssh[*]} " =~ " sergio " ]]; then
echo "" echo ""
echo "Detected user 'sergio' was created." echo "Detected user 'sergio' in selected users."
echo "Use pre-configured SSH key for sergio? (Y/n)" echo "Use pre-configured SSH key for sergio? (Y/n)"
echo "Key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINBYyuGSa2wswiiObp2qj30MoiNRyFdBIBciFSbtrkZ8 mbpm1" echo "Key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINBYyuGSa2wswiiObp2qj30MoiNRyFdBIBciFSbtrkZ8 mbpm1"
echo "" echo ""
@@ -205,15 +222,15 @@ ask_ssh_key_setup() {
done done
fi fi
# Add key to all created users and generate SSH keys for them # Add key to all selected users and generate SSH keys for them
for username in "${users_created[@]}"; do for username in "${users_for_ssh[@]}"; do
setup_ssh_key_for_user "$username" "$user_public_key" setup_ssh_key_for_user "$username" "$user_public_key"
generate_ssh_key_for_user "$username" generate_ssh_key_for_user "$username"
done done
echo "" echo ""
log "SSH key added to: ${users_created[*]}" log "SSH key added to: ${users_for_ssh[*]}"
log "SSH keys generated for: ${users_created[*]}" log "SSH keys generated for: ${users_for_ssh[*]}"
} }
setup_ssh_key_for_user() { setup_ssh_key_for_user() {
@@ -327,7 +344,7 @@ create_additional_user() {
log "Creating additional user: $ADDITIONAL_USER" log "Creating additional user: $ADDITIONAL_USER"
if id "$ADDITIONAL_USER" &>/dev/null; then if id "$ADDITIONAL_USER" &>/dev/null; then
warn "User $ADDITIONAL_USER already exists, skipping creation" log "Using existing user: $ADDITIONAL_USER"
ADDITIONAL_USER_CREATED="no" ADDITIONAL_USER_CREATED="no"
else else
# Create user with home directory # Create user with home directory
@@ -340,7 +357,7 @@ create_additional_user() {
passwd "$ADDITIONAL_USER" passwd "$ADDITIONAL_USER"
fi fi
# Add additional user to sudo group # Add additional user to sudo group (existing or newly created)
log "Adding $ADDITIONAL_USER to sudo group..." log "Adding $ADDITIONAL_USER to sudo group..."
usermod -aG sudo "$ADDITIONAL_USER" usermod -aG sudo "$ADDITIONAL_USER"
fi fi