Files
postinstall-debian/modules/system/user-sudo/module.sh
2026-03-15 04:54:51 +01:00

104 lines
3.2 KiB
Bash

#!/usr/bin/env bash
MODULE_USER_SUDO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
MODULE_USER_SUDO_PROJECT_ROOT="$(cd "$MODULE_USER_SUDO_DIR/../../.." && pwd)"
# shellcheck source=lib/package.sh
source "$MODULE_USER_SUDO_PROJECT_ROOT/lib/package.sh"
# shellcheck source=modules/system/user-sudo/config.sh
source "$MODULE_USER_SUDO_DIR/config.sh"
# shellcheck source=modules/system/user-sudo/metadata.conf
source "$MODULE_USER_SUDO_DIR/metadata.conf"
module_user_sudo_require_package() {
if package_is_installed "sudo"; then
ui_info "Paquet sudo deja installe"
return 0
fi
ui_warn "Paquet sudo absent, installation en cours"
package_refresh_indexes
package_install sudo
log_info "Paquet sudo installe"
ui_success "Paquet sudo installe"
}
module_user_sudo_metadata() {
printf '%s|%s|%s\n' "$MODULE_ID" "$MODULE_NAME" "$MODULE_DESCRIPTION"
}
module_user_sudo_check() {
local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}"
if ! package_is_installed "sudo"; then
ui_warn "Paquet sudo non installe"
return 1
fi
if ! system_user_exists "$target_user"; then
ui_error "Utilisateur introuvable : $target_user"
return 1
fi
if ! system_group_exists "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then
ui_error "Groupe requis introuvable : $POSTINSTALL_USER_SUDO_TARGET_GROUP"
return 1
fi
if system_user_in_group "$target_user" "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then
ui_success "Utilisateur $target_user deja membre du groupe sudo"
return 0
fi
ui_warn "Utilisateur $target_user non membre du groupe sudo"
return 1
}
module_user_sudo_install() {
local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}"
module_user_sudo_require_package || return 1
if ! system_user_exists "$target_user"; then
ui_error "Impossible de configurer sudo : utilisateur absent ($target_user)"
return 1
fi
if ! system_group_exists "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then
ui_error "Impossible de configurer sudo : groupe absent ($POSTINSTALL_USER_SUDO_TARGET_GROUP)"
return 1
fi
if system_user_in_group "$target_user" "$POSTINSTALL_USER_SUDO_TARGET_GROUP"; then
log_info "Aucun changement sudo requis pour $target_user"
ui_info "Aucun changement : $target_user est deja dans sudo"
else
usermod -aG "$POSTINSTALL_USER_SUDO_TARGET_GROUP" "$target_user"
log_info "Utilisateur $target_user ajoute au groupe sudo"
ui_success "Utilisateur $target_user ajoute au groupe sudo"
fi
module_user_sudo_configure "$target_user"
}
module_user_sudo_configure() {
local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}"
if command -v visudo >/dev/null 2>&1; then
visudo -cf /etc/sudoers >/dev/null
log_info "Validation visudo reussie pour $target_user"
ui_success "Configuration sudo validee avec visudo"
else
ui_warn "visudo indisponible, validation sudo non effectuee"
fi
}
module_user_sudo_test() {
local target_user="${1:-$POSTINSTALL_USER_SUDO_TARGET_USER}"
package_is_installed "sudo" || return 1
system_user_exists "$target_user" || return 1
system_group_exists "$POSTINSTALL_USER_SUDO_TARGET_GROUP" || return 1
system_user_in_group "$target_user" "$POSTINSTALL_USER_SUDO_TARGET_GROUP"
}