104 lines
3.2 KiB
Bash
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"
|
|
}
|