Refactor user creation logic in setup script to include existence checks and detailed logging for both sysadmin and additional users. Enhance error handling during user addition to the sudo group. Remove self-deletion feature from customization script to maintain script availability post-execution.

This commit is contained in:
2025-09-25 17:29:29 +01:00
parent 71634a1c03
commit 10e9129ed4
2 changed files with 45 additions and 15 deletions

View File

@@ -251,11 +251,6 @@ main() {
echo "" echo ""
echo -e "${GREEN}Server customization completed!${NC}" echo -e "${GREEN}Server customization completed!${NC}"
echo -e "${YELLOW}You may need to log out and back in to see the hostname change.${NC}" echo -e "${YELLOW}You may need to log out and back in to see the hostname change.${NC}"
# Self-delete the script after successful completion
log "Cleaning up customization script..."
rm -f "$0"
log "Customization script deleted successfully"
} }
main "$@" main "$@"

View File

@@ -319,9 +319,11 @@ setup_system() {
create_sysadmin_user() { create_sysadmin_user() {
log "Creating user: $SYSADMIN_USER" log "Creating user: $SYSADMIN_USER"
log "Checking if user $SYSADMIN_USER already exists..."
if id "$SYSADMIN_USER" &>/dev/null; then if id "$SYSADMIN_USER" &>/dev/null; then
warn "User $SYSADMIN_USER already exists, skipping creation" warn "User $SYSADMIN_USER already exists, skipping creation"
log "User $SYSADMIN_USER found in system, UID: $(id -u $SYSADMIN_USER)"
SYSADMIN_USER_CREATED="no" SYSADMIN_USER_CREATED="no"
# Check if the existing user has the default password "hhh" # Check if the existing user has the default password "hhh"
@@ -336,9 +338,17 @@ create_sysadmin_user() {
fi fi
else else
# Create user with home directory # Create user with home directory
useradd -m -s /bin/bash "$SYSADMIN_USER" log "Attempting to create user $SYSADMIN_USER with home directory..."
log "User $SYSADMIN_USER created successfully" log "Running command: useradd -m -s /bin/bash $SYSADMIN_USER"
SYSADMIN_USER_CREATED="yes"
if useradd -m -s /bin/bash "$SYSADMIN_USER"; then
log "User $SYSADMIN_USER created successfully"
log "User details: $(getent passwd $SYSADMIN_USER)"
log "Home directory: $(getent passwd $SYSADMIN_USER | cut -d: -f6)"
SYSADMIN_USER_CREATED="yes"
else
error "Failed to create user $SYSADMIN_USER. Exit code: $?"
fi
# Set password for sysadmin user with retry logic # Set password for sysadmin user with retry logic
local max_attempts=3 local max_attempts=3
@@ -362,21 +372,38 @@ create_sysadmin_user() {
# Add sysadmin to sudo group # Add sysadmin to sudo group
log "Adding $SYSADMIN_USER to sudo group..." log "Adding $SYSADMIN_USER to sudo group..."
usermod -aG sudo "$SYSADMIN_USER" log "Running command: usermod -aG sudo $SYSADMIN_USER"
if usermod -aG sudo "$SYSADMIN_USER"; then
log "Successfully added $SYSADMIN_USER to sudo group"
log "User groups: $(groups $SYSADMIN_USER)"
else
error "Failed to add $SYSADMIN_USER to sudo group. Exit code: $?"
fi
} }
create_additional_user() { create_additional_user() {
if [[ "$CREATE_ADDITIONAL_USER" == "yes" && -n "$ADDITIONAL_USER" ]]; then if [[ "$CREATE_ADDITIONAL_USER" == "yes" && -n "$ADDITIONAL_USER" ]]; then
log "Creating additional user: $ADDITIONAL_USER" log "Creating additional user: $ADDITIONAL_USER"
log "Checking if user $ADDITIONAL_USER already exists..."
if id "$ADDITIONAL_USER" &>/dev/null; then if id "$ADDITIONAL_USER" &>/dev/null; then
log "Using existing user: $ADDITIONAL_USER" log "Using existing user: $ADDITIONAL_USER"
log "User $ADDITIONAL_USER found in system, UID: $(id -u $ADDITIONAL_USER)"
ADDITIONAL_USER_CREATED="no" ADDITIONAL_USER_CREATED="no"
else else
# Create user with home directory # Create user with home directory
useradd -m -s /bin/bash "$ADDITIONAL_USER" log "Attempting to create user $ADDITIONAL_USER with home directory..."
log "User $ADDITIONAL_USER created successfully" log "Running command: useradd -m -s /bin/bash $ADDITIONAL_USER"
ADDITIONAL_USER_CREATED="yes"
if useradd -m -s /bin/bash "$ADDITIONAL_USER"; then
log "User $ADDITIONAL_USER created successfully"
log "User details: $(getent passwd $ADDITIONAL_USER)"
log "Home directory: $(getent passwd $ADDITIONAL_USER | cut -d: -f6)"
ADDITIONAL_USER_CREATED="yes"
else
error "Failed to create user $ADDITIONAL_USER. Exit code: $?"
fi
# Set password for additional user with retry logic # Set password for additional user with retry logic
local max_attempts=3 local max_attempts=3
@@ -400,7 +427,14 @@ create_additional_user() {
# Add additional user to sudo group (existing or newly created) # 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" log "Running command: usermod -aG sudo $ADDITIONAL_USER"
if usermod -aG sudo "$ADDITIONAL_USER"; then
log "Successfully added $ADDITIONAL_USER to sudo group"
log "User groups: $(groups $ADDITIONAL_USER)"
else
error "Failed to add $ADDITIONAL_USER to sudo group. Exit code: $?"
fi
fi fi
} }
@@ -609,10 +643,11 @@ finalize_setup() {
log "SSH service restarted successfully" log "SSH service restarted successfully"
# Copy customization script to sysadmin user home folder # Copy customization script to sysadmin user home folder (always replace if exists)
log "Copying customization script..." log "Copying customization script..."
if [[ -f "costumize.sh" ]]; then if [[ -f "costumize.sh" ]]; then
cp costumize.sh /home/$SYSADMIN_USER/costumize.sh log "Local costumize.sh found, copying to /home/$SYSADMIN_USER/costumize.sh (replacing if exists)"
cp -f costumize.sh /home/$SYSADMIN_USER/costumize.sh
chmod +x /home/$SYSADMIN_USER/costumize.sh chmod +x /home/$SYSADMIN_USER/costumize.sh
chown $SYSADMIN_USER:$SYSADMIN_USER /home/$SYSADMIN_USER/costumize.sh chown $SYSADMIN_USER:$SYSADMIN_USER /home/$SYSADMIN_USER/costumize.sh
log "Customization script copied to /home/$SYSADMIN_USER/costumize.sh" log "Customization script copied to /home/$SYSADMIN_USER/costumize.sh"