From e7d3b6cf16868098965089caf04df6126a87aa03 Mon Sep 17 00:00:00 2001 From: BeauTroll <-> Date: Wed, 17 Dec 2025 05:56:58 +0100 Subject: [PATCH] Fix restore script permissions handling with sudo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add sudo usage for data directory operations to handle Docker-created files owned by UID 1000. The restore script now properly cleans and extracts data with correct permissions, preventing "Permission denied" errors when restoring backups. Changes: - Use sudo rm for cleaning existing data directory - Use sudo tar for extracting backup data - Add sudo chown to restore proper file ownership (1000:1000) - Remove redundant success message from Makefile restore target 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- Makefile | 1 - scripts/restore.sh | 31 ++++++++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 5b5bf4d..a593d64 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,6 @@ restore: ## Restaure depuis une sauvegarde (usage: make restore FILE=backups/git fi @echo -e "$(BLUE)Restauration depuis $(FILE)...$(NC)" @bash scripts/restore.sh "$(FILE)" - @echo -e "$(GREEN)Restauration terminée$(NC)" ## Mise à jour et maintenance diff --git a/scripts/restore.sh b/scripts/restore.sh index 20b214b..69b0f96 100755 --- a/scripts/restore.sh +++ b/scripts/restore.sh @@ -227,32 +227,37 @@ log "${YELLOW}[5/6] Restauration des données Gitea...${NC}" # Arrêter Gitea s'il tourne docker compose stop gitea 2>/dev/null || true -# Nettoyer les données existantes de manière sécurisée +# Nettoyer les données existantes de manière sécurisée avec les bonnes permissions DATA_DIR="./data" if [ -d "$DATA_DIR" ]; then - # Vérifier que c'est bien le bon répertoire - if [ "$DATA_DIR" = "./data" ]; then - log "Suppression des anciennes données..." - # Utiliser find pour une suppression plus sûre - find "$DATA_DIR" -mindepth 1 -delete 2>> "$LOG_FILE" || { - log "${YELLOW}Avertissement: Échec du nettoyage partiel${NC}" - } - else - log "${RED}Erreur: Répertoire de données invalide: $DATA_DIR${NC}" - exit 1 + log "Suppression des anciennes données avec sudo..." + # Utiliser sudo pour supprimer les fichiers appartenant à l'utilisateur Docker + if ! sudo rm -rf "$DATA_DIR"/* 2>> "$LOG_FILE"; then + log "${YELLOW}Avertissement: Échec du nettoyage${NC}" + log "Vous pouvez exécuter manuellement: sudo rm -rf $DATA_DIR/*" + read -p "Continuer quand même? (oui/non) " -r + if [[ ! $REPLY =~ ^[Oo][Uu][Ii]$ ]]; then + exit 1 + fi fi fi # Créer le répertoire de données mkdir -p "$DATA_DIR" -# Extraire les données depuis l'archive +# Extraire les données depuis l'archive avec sudo pour les permissions log "Extraction des données Gitea..." -if ! tar xzf "$BACKUP_DIR/gitea_data.tar.gz" -C "$DATA_DIR" 2>> "$LOG_FILE"; then +if ! sudo tar xzf "$BACKUP_DIR/gitea_data.tar.gz" -C "$DATA_DIR" 2>> "$LOG_FILE"; then log "${RED}Erreur: Échec de l'extraction des données Gitea${NC}" exit 1 fi +# Restaurer les bonnes permissions (UID/GID 1000 pour Gitea) +log "Restauration des permissions..." +if ! sudo chown -R 1000:1000 "$DATA_DIR" 2>> "$LOG_FILE"; then + log "${YELLOW}Avertissement: Impossible de changer les permissions${NC}" +fi + # Vérifier les permissions log "Vérification des permissions..." if [ -d "$DATA_DIR/gitea" ]; then