Carnet Wiki

Corriger droits des dossiers SPIP

Suite à problème d’affichage des images et de propriétaire shell des dossiers et fichiers, @pamillet partage un script pour corriger une configuration erronée des droits (rwx etc) et owners sur l’arborescence des dossiers SPIP

#!/bin/bash

# Script pour corriger les permissions et la structure d'un site SPIP
# Usage: ./fix_spip_permissions.sh [chemin_vers_dossier_spip]
# Exemple: ./fix_spip_permissions.sh ~/spip-lepcf

# Vérifier que le script est exécuté avec un argument (dossier SPIP)
if [ -z "$1" ]; then
    echo "❌ Erreur: Veuillez spécifier le chemin vers le dossier SPIP."
    echo "   Exemple: $0 ~/mon-site-spip"
    exit 1
fi

SPIP_DIR="$1"

# Vérifier que le dossier existe
if [ ! -d "$SPIP_DIR" ]; then
    echo "❌ Erreur: Le dossier '$SPIP_DIR' n'existe pas."
    exit 1
fi

# Récupérer l'utilisateur actuel (ex: venissie-pam)
CURRENT_USER=$(whoami)
GROUP=$(id -gn)  # Récupère le groupe principal de l'utilisateur

echo "🔧 Correction des permissions pour SPIP dans : $SPIP_DIR"
echo "   Utilisateur: $CURRENT_USER"
echo "   Groupe: $GROUP"
echo ""

# 1. Corriger le propriétaire de tous les fichiers/dossiers
echo "🔹 Correction du propriétaire ($CURRENT_USER:$GROUP)..."
chown -R "$CURRENT_USER:$GROUP" "$SPIP_DIR"

# 2. Permissions pour les dossiers
echo "🔹 Correction des permissions des dossiers..."
find "$SPIP_DIR" -type d -exec chmod 755 {} \;

# 3. Permissions pour les fichiers (sauf .htaccess et fichiers sensibles)
echo "🔹 Correction des permissions des fichiers..."
find "$SPIP_DIR" -type f -exec chmod 644 {} \;

# 4. Permissions spécifiques pour les fichiers sensibles
echo "🔹 Correction des permissions des fichiers sensibles..."
# Fichiers de configuration (ex: mes_options.php, spip_loader.php)
find "$SPIP_DIR" -type f \( -name "mes_options.php" -o -name "spip_loader*.php" -o -name "spip_loader*.json" -o -name ".env" \) -exec chmod 644 {} \;

# 5. Dossiers critiques pour SPIP (tmp, config, local, prive, IMG, etc.)
echo "🔹 Vérification des dossiers critiques..."
for dir in tmp config local prive IMG IMG2 plugins squelettes; do
    if [ -d "$SPIP_DIR/$dir" ]; then
        chmod 755 "$SPIP_DIR/$dir"
        chown "$CURRENT_USER:$GROUP" "$SPIP_DIR/$dir"
        echo "   ✅ Dossier '$dir/' : permissions 755, propriétaire $CURRENT_USER:$GROUP"
    fi
done

# 6. Gestion des dossiers IMG2/ (optionnel)
echo ""
echo "🔹 Vérification du dossier IMG2/..."
if [ -d "$SPIP_DIR/IMG2" ]; then
    echo "   ⚠️  Le dossier IMG2/ existe."
    echo "   Contenu :"
    ls -la "$SPIP_DIR/IMG2" | head -n 5
    echo ""
    read -p "   Voulez-vous fusionner IMG2/ dans IMG/ ? (O/n) " -n 1 -r
    echo ""
    if [[ $REPLY =~ ^[OoYy]$ ]]; then
        echo "   🔄 Fusion de IMG2/ dans IMG/..."
        mv "$SPIP_DIR/IMG2/"* "$SPIP_DIR/IMG/" 2>/dev/null
        rmdir "$SPIP_DIR/IMG2/" 2>/dev/null
        echo "   ✅ Fusion terminée. IMG2/ a été supprimé s'il était vide."
    else
        echo "   ⏩ IMG2/ n'a pas été modifié."
    fi
fi

# 7. Résumé final
echo ""
echo "✅ Script terminé !"
echo "   📌 Vérifiez que tout fonctionne correctement dans SPIP."
echo "   📌 Si des erreurs persistent, exécutez : ls -la $SPIP_DIR"
JLuc - Mise à jour :30 April 2026 at 10:20