first
This commit is contained in:
2
modules/system/user-sudo/config.sh
Normal file
2
modules/system/user-sudo/config.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
POSTINSTALL_USER_SUDO_TARGET_USER="${POSTINSTALL_DEFAULT_USER:-gilles}"
|
||||
POSTINSTALL_USER_SUDO_TARGET_GROUP="sudo"
|
||||
4
modules/system/user-sudo/metadata.conf
Normal file
4
modules/system/user-sudo/metadata.conf
Normal file
@@ -0,0 +1,4 @@
|
||||
MODULE_ID="system/user-sudo"
|
||||
MODULE_NAME="Configuration sudo utilisateur"
|
||||
MODULE_CATEGORY="system"
|
||||
MODULE_DESCRIPTION="Ajoute un utilisateur cible au groupe sudo et valide la configuration sudo"
|
||||
103
modules/system/user-sudo/module.sh
Normal file
103
modules/system/user-sudo/module.sh
Normal file
@@ -0,0 +1,103 @@
|
||||
#!/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"
|
||||
}
|
||||
32
modules/system/user-sudo/tests.sh
Executable file
32
modules/system/user-sudo/tests.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
MODULE_USER_SUDO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$MODULE_USER_SUDO_DIR/../../.." && pwd)"
|
||||
|
||||
# shellcheck source=lib/ui.sh
|
||||
source "$PROJECT_ROOT/lib/ui.sh"
|
||||
# shellcheck source=lib/log.sh
|
||||
source "$PROJECT_ROOT/lib/log.sh"
|
||||
# shellcheck source=lib/package.sh
|
||||
source "$PROJECT_ROOT/lib/package.sh"
|
||||
# shellcheck source=lib/system.sh
|
||||
source "$PROJECT_ROOT/lib/system.sh"
|
||||
# shellcheck source=core/runtime.sh
|
||||
source "$PROJECT_ROOT/core/runtime.sh"
|
||||
# shellcheck source=modules/system/user-sudo/module.sh
|
||||
source "$MODULE_USER_SUDO_DIR/module.sh"
|
||||
|
||||
runtime_init "$PROJECT_ROOT"
|
||||
log_init
|
||||
|
||||
if ! package_is_installed sudo; then
|
||||
printf 'user-sudo test SKIPPED: sudo package not installed\n'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if module_user_sudo_test "${1:-gilles}"; then
|
||||
printf 'user-sudo test OK\n'
|
||||
else
|
||||
printf 'user-sudo test FAILED\n' >&2
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user