diff --git a/scripts/server-httpd/.list_files.txt b/scripts/server-httpd/.list_files.txt index 0a4e714..f703f2a 100644 --- a/scripts/server-httpd/.list_files.txt +++ b/scripts/server-httpd/.list_files.txt @@ -1,4 +1,5 @@ add_domain.sh add_domain_ssl.sh install-php8-3.sh +set-permissions-www.sh setup_httpd.sh diff --git a/scripts/server-httpd/set-permissions-www.sh b/scripts/server-httpd/set-permissions-www.sh new file mode 100644 index 0000000..bb4b704 --- /dev/null +++ b/scripts/server-httpd/set-permissions-www.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0 + +# Importer les fonctions communes +source "$(dirname "$0")/../common/common_utils.sh" + +# Vérifier si le script est exécuté en root +check_root + +WWW_DIR="/var/www" +CURRENT_USER=$(whoami) + +echo "Correction des permissions de $WWW_DIR/html si nécessaire..." +if [ -d "$WWW_DIR/html" ]; then + OWNER_GROUP=$(stat -c "%U:%G" "$WWW_DIR/html") + if [ "$OWNER_GROUP" != "www-data:www-data" ]; then + sudo chown -R www-data:www-data "$WWW_DIR/html" + echo "Propriétaire de /$WWW_DIR/html corrigé en www-data:www-data" + else + echo "$WWW_DIR/html est déjà correctement configuré." + fi +fi + +echo "" +echo "Liste des dossiers dans $WWW_DIR :" +dirs=() +i=1 +for d in "$WWW_DIR"/*/; do + folder=$(basename "$d") + dirs+=("$folder") + echo "[$i] $folder" + ((i++)) +done + +echo "[0] Tous les dossiers" + +read -p "Sur quel dossier appliquer la règle ? (Entrer le numéro ou 0 pour tous) : " choix + +# Ajout de l'utilisateur courant au groupe www-data +if id -nG "$CURRENT_USER" | grep -qw "www-data"; then + echo "L'utilisateur $CURRENT_USER est déjà dans le groupe www-data" +else + echo "Ajout de $CURRENT_USER au groupe www-data..." + sudo usermod -aG www-data "$CURRENT_USER" +fi + +# Fonction d'application des droits +apply_permissions() { + dossier="$1" + echo "Application des permissions sur $WWW_DIR/$dossier ..." + chown -R www-data:www-data "$WWW_DIR/$dossier" + chmod -R g+rwX "$WWW_DIR/$dossier" +} + +if [ "$choix" -eq 0 ]; then + for d in "${dirs[@]}"; do + apply_permissions "$d" + done +else + index=$((choix - 1)) + if [ "$index" -ge 0 ] && [ "$index" -lt "${#dirs[@]}" ]; then + apply_permissions "${dirs[$index]}" + else + echo "Choix invalide." + exit 1 + fi +fi + +echo "" +echo "Opération terminée. Pensez à vous déconnecter/reconnecter si c'est la première fois que vous rejoignez le groupe www-data."