Quando si gestisce un sito WordPress, è fondamentale garantire che i permessi dei file e delle directory siano impostati correttamente per mantenere la sicurezza e la funzionalità del sito. Una configurazione errata può esporre il sito a potenziali attacchi, mentre permessi troppo restrittivi possono impedire al sito di funzionare correttamente.

Vediamo uno script Bash che consente di configurare i permessi ideali per un sito WordPress, assicurando che siano impostati in modo sicuro e conforme alle migliori pratiche.

Perché i permessi sono importanti

In un ambiente server, i permessi determinano chi può leggere, scrivere ed eseguire file e directory. Per un sito WordPress, una corretta impostazione dei permessi aiuta a prevenire:

  • Accessi non autorizzati ai file critici.
  • Modifiche accidentali o malevole ai file.
  • Problemi di funzionamento dovuti a permessi insufficienti.

Panoramica dello Script

Lo script proposto è progettato per essere eseguito da un utente con privilegi di root e configura automaticamente i permessi su un'installazione WordPress esistente. Ecco come funziona:

  • Proprietà dei file: I file e le directory vengono assegnati all'utente e al gruppo www-data, che è tipicamente l'utente del web server su sistemi basati su Linux.
  • Permessi di directory: Tutte le directory vengono impostate con permessi 755, che consentono al proprietario di leggere, scrivere ed eseguire, mentre altri utenti possono solo leggere ed eseguire.
  • Permessi dei file: Tutti i file vengono impostati con permessi 644, che consentono al proprietario di leggere e scrivere, mentre altri utenti possono solo leggere.
  • Permessi speciali: I file wp-config.php e .htaccess ricevono permessi più restrittivi per proteggere le informazioni sensibili e garantire che solo l'utente del web server possa gestirli.

Script bash per impostare i permessi

Di seguito è riportato lo script Bash:

#!/bin/bash

# Verifica se lo script è stato eseguito come root
if [ "$EUID" -ne 0 ]; then
  echo "Per favore, esegui questo script come root"
  exit
fi

# Richiede il nome del dominio per cui si vogliono impostare i permessi
echo "Inserisci il nome del dominio per cui vuoi settare i permessi (esempio.com oppure sub.esempio.com):"
read -p "Dominio: " domain

# Variabili per i permessi
WP_OWNER=www-data # <-- proprietario wordpress
WP_GROUP=www-data # <-- gruppo wordpress
WP_ROOT=/var/www/$domain/wordpress # <-- percorso wordpress
WS_GROUP=www-data # <-- gruppo web server

# Reset dei permessi predefiniti
find ${WP_ROOT} -exec chown ${WP_OWNER}:${WP_GROUP} {} \; # <-- imposta il proprietario e il gruppo
find ${WP_ROOT} -type d -exec chmod 755 {} \; # <-- imposta i permessi delle directory
find ${WP_ROOT} -type f -exec chmod 644 {} \; # <-- imposta i permessi dei file

# Imposta i permessi speciali 
chgrp ${WS_GROUP} ${WP_ROOT}/wp-config.php # <-- imposta il gruppo di wp-config.php
chmod 640 ${WP_ROOT}/wp-config.php # <-- imposta i permessi di wp-config.php

# Crea il file .htaccess se non esiste e imposta i permessi
touch ${WP_ROOT}/.htaccess # <-- crea il file .htaccess se non esiste
chgrp ${WS_GROUP} ${WP_ROOT}/.htaccess # <-- imposta il gruppo del file .htaccess
chmod 644 ${WP_ROOT}/.htaccess # <-- imposta i permessi del file .htaccess

# Imposta i permessi di wp-content
find ${WP_ROOT}/wp-content -exec chown -R ${WP_OWNER}:${WS_GROUP} {} \; # <-- imposta il proprietario e il gruppo di wp-content
find ${WP_ROOT}/wp-content -type d -exec chmod 775 {} \; # <-- imposta i permessi delle directory di wp-content
find ${WP_ROOT}/wp-content -type f -exec chmod 664 {} \; # <-- imposta i permessi dei file di wp-content

echo "I permessi sono stati impostati correttamente" # <-- messaggio di conferma

Come Utilizzare lo Script

  • Salva lo script: Salva il codice in un file, ad esempio imposta-permessi.sh.
  • Rendi eseguibile lo script: Usa il comando chmod +x imposta-permessi.sh per renderlo eseguibile.
  • Esegui lo script: Esegui lo script come root o utilizzando sudo, con il comando sudo ./imposta-permessi.sh.
  • Inserisci il dominio: Quando richiesto, inserisci il nome del dominio del sito WordPress per il quale desideri configurare i permessi.

Conclusioni

Impostare correttamente i permessi su un sito WordPress è una pratica essenziale per garantire la sicurezza e il corretto funzionamento del sito. Lo script fornito è un ottimo punto di partenza per automatizzare questo processo e assicurarsi che i permessi siano impostati secondo le migliori pratiche.