diff --git a/RebuildBdd/bootstrap-target-host.sh b/RebuildBdd/bootstrap-target-host.sh index 82b429a..94938bb 100755 --- a/RebuildBdd/bootstrap-target-host.sh +++ b/RebuildBdd/bootstrap-target-host.sh @@ -393,6 +393,17 @@ ssh "${SSH_OPTS[@]}" "$REMOTE" "$REMOTE_BACKUP_TEST_CMD" \ || fail "la cible ne peut pas accéder au serveur de backup avec la clé fournie" if [[ "$ALLOW_PASSWORDLESS_SUDO" == "yes" ]]; then + REMOTE_SUDOERS_PRECHECK_CMD=" +set -euo pipefail + +if [ \"\$(id -u)\" -eq 0 ]; then + exit 0 +fi + +command -v sudo >/dev/null 2>&1 || exit 1 +sudo true /dev/null 2>&1 +" + REMOTE_SUDOERS_CMD=" set -euo pipefail @@ -435,13 +446,16 @@ visudo -cf \"\$TMP_SUDOERS_FILE\" >/dev/null 2>&1 || { run_root install -m 440 \"\$TMP_SUDOERS_FILE\" /etc/sudoers.d/rebuild-bdd-${TARGET_RUNTIME_USER_VALUE} rm -f \"\$TMP_SUDOERS_FILE\" -" + " - log "Installation du sudoers non interactif minimal" - ssh "${SSH_OPTS[@]}" "$REMOTE" "$REMOTE_SUDOERS_CMD" \ - || fail "échec d'installation du sudoers non interactif" + log "Installation du sudoers minimal" + if ! ssh "${SSH_OPTS[@]}" "$REMOTE" "$REMOTE_SUDOERS_PRECHECK_CMD" >/dev/null 2>&1; then + log "Installation du sudoers ignorée : élévation de privilèges indisponible sans interaction." + elif ! ssh "${SSH_OPTS[@]}" "$REMOTE" "$REMOTE_SUDOERS_CMD" >/dev/null 2>&1; then + log "Installation du sudoers ignorée : privilèges root/sudo insuffisants pour cette étape." + fi else - log "Installation du sudoers non interactif désactivée." + log "Installation du sudoers minimal désactivée." fi REMOTE_REPO_CMD="