Uno script sh per settare i permessi di file e cartelle di wordpress

Lo script segue le pratiche consigliate per i permessi di WordPress:

  • File: Permessi a 644 (lettura/scrittura per il proprietario, lettura per altri).
  • Directory: Permessi a 755 (lettura/esecuzione per tutti, scrittura solo per il proprietario).
  • File sensibili: Come wp-config.php, impostati a 600 (solo il proprietario può leggere/scrivere).
  • Utente/Group: Facoltativamente, puoi assegnare un utente o un gruppo specifico.

#!/bin/bash

# Configura il percorso root di WordPress
WP_ROOT="/percorso/al/tuo/sito" # Cambia con il percorso corretto

# Configura il proprietario (user e group) - modifica se necessario
USER="www-data" # Utente web server (es: www-data, apache, nginx)
GROUP="www-data" # Gruppo web server

# Controlla se eseguito come root
if [ "$EUID" -ne 0 ]; then
echo "Per favore esegui lo script come root o con sudo."
exit 1
fi

echo "Impostazione dei permessi per il sito WordPress nella directory: $WP_ROOT"

# Imposta il proprietario per tutti i file e directory
echo "Imposto il proprietario a $USER:$GROUP..."
chown -R $USER:$GROUP "$WP_ROOT"

# Imposta i permessi per le directory
echo "Imposto i permessi delle directory a 755..."
find "$WP_ROOT" -type d -exec chmod 755 {} \;

# Imposta i permessi per i file
echo "Imposto i permessi dei file a 644..."
find "$WP_ROOT" -type f -exec chmod 644 {} \;

# Imposta i permessi sicuri per wp-config.php
if [ -f "$WP_ROOT/wp-config.php" ]; then
echo "Imposto permessi sicuri per wp-config.php (600)..."
chmod 600 "$WP_ROOT/wp-config.php"
fi

# Permessi speciali per wp-content/uploads (scrivibili dal server)
UPLOADS_DIR="$WP_ROOT/wp-content/uploads"
if [ -d "$UPLOADS_DIR" ]; then
echo "Imposto permessi per la directory uploads (775)..."
chmod -R 775 "$UPLOADS_DIR"
echo "Rendo uploads scrivibile da utente e gruppo..."
chown -R $USER:$GROUP "$UPLOADS_DIR"
fi

echo "Permessi impostati correttamente per WordPress!"

# Finitura
exit 0

Come usare lo script:

  1. Crea lo script:
    • Salva il codice in un file chiamato, ad esempio, set-wordpress-permissions.sh.
  2. Modifica le variabili:
    • Cambia WP_ROOT con il percorso della root del tuo sito WordPress.
    • Cambia USER e GROUP con l’utente e il gruppo utilizzati dal server web (es. www-data per Apache/Nginx su Ubuntu).
  3. Rendi lo script eseguibile:
    chmod +x set-wordpress-permissions.sh
  4. Esegui lo script con privilegi di amministratore:
    sudo ./set-wordpress-permissions.sh
  5. Verifica i permessi:
    Puoi controllare che i permessi siano stati applicati correttamente con
    ls -l /percorso/al/tuo/sito

Spiegazione dei permessi:

  • 644 (file): Lettura/scrittura per il proprietario, lettura per il gruppo e altri.
  • 755 (directory): Lettura/esecuzione per tutti, scrittura per il proprietario.
  • 600 (wp-config.php): Lettura/scrittura solo per il proprietario.
  • 775 (uploads): Lettura/scrittura per proprietario e gruppo, lettura per altri.

Nota:

  • Lo script si assume che il server web (Apache/Nginx) utilizzi l’utente/gruppo specificato (www-data).
  • Se stai utilizzando configurazioni diverse, assicurati di modificare di conseguenza i permessi o il proprietario.
  • Avrai bisogno di un’utenza con abbastanza privilegi per eseguire il file sh sulla macchina dove gira il tuo wordpress.