j’ai demandé à mistral un script qui remette tous les droits au propre…
ca peut faire un utilitaire spip ? s’il est juste bien sûr…
#!/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"