From fd2be2393e62511d278baa3a6482c53e70815008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Barbosa?= Date: Fri, 5 Sep 2025 12:36:34 +0100 Subject: [PATCH] Add command checks to setup script for user management. Implement validation for required commands and enhance error handling for usermod command usage during user creation processes. --- setup.sh | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index d090c4e..53376a2 100755 --- a/setup.sh +++ b/setup.sh @@ -47,6 +47,22 @@ check_debian() { fi } +# Check for required commands +check_commands() { + local required_commands="useradd passwd sudo" + + for cmd in $required_commands; do + if ! command -v "$cmd" >/dev/null 2>&1 && ! [ -x "/usr/sbin/$cmd" ]; then + error "Required command '$cmd' not found. Please install it first." + fi + done + + # Special check for usermod which we use later + if ! command -v usermod >/dev/null 2>&1 && ! [ -x /usr/sbin/usermod ]; then + warn "usermod command not found. Will attempt to use full path." + fi +} + # Ask user about creating an additional user ask_additional_user() { echo "" @@ -174,7 +190,13 @@ create_sysadmin_user() { # Add sysadmin to sudo group log "Adding $SYSADMIN_USER to sudo group..." - usermod -aG sudo "$SYSADMIN_USER" + if command -v usermod >/dev/null 2>&1; then + usermod -aG sudo "$SYSADMIN_USER" + elif [ -x /usr/sbin/usermod ]; then + /usr/sbin/usermod -aG sudo "$SYSADMIN_USER" + else + error "usermod command not found. Please install the passwd package." + fi } create_additional_user() { @@ -195,7 +217,13 @@ create_additional_user() { # Add additional user to sudo group log "Adding $ADDITIONAL_USER to sudo group..." - usermod -aG sudo "$ADDITIONAL_USER" + if command -v usermod >/dev/null 2>&1; then + usermod -aG sudo "$ADDITIONAL_USER" + elif [ -x /usr/sbin/usermod ]; then + /usr/sbin/usermod -aG sudo "$ADDITIONAL_USER" + else + error "usermod command not found. Please install the passwd package." + fi fi } @@ -579,6 +607,7 @@ main() { # Check prerequisites check_root check_debian + check_commands echo -e "${BLUE}=== Debian 12 Initial Setup ===${NC}" echo "This script will:"