I permessi dei file sono uno di quegli argomenti che si rimandano finché un errore di caricamento o un consiglio frainteso non trasforma un sito in un colabrodo. Eppure le regole stanno in pochi numeri. Questo articolo spiega cosa significano 644 e 755, perché wp-config.php merita un trattamento a parte e quali valori sono davvero pericolosi su un hosting WordPress.
Leggere un permesso in trenta secondi
Su Linux ogni file ha tre gruppi di diritti: il proprietario, il gruppo e gli altri (tutti). Per ogni gruppo sono possibili tre azioni: leggere (r), scrivere (w), eseguire (x). I numeri che vedi (644, 755) sono semplicemente la traduzione di questi diritti in notazione ottale, dove la lettura vale 4, la scrittura 2 e l'esecuzione 1.
- 644 corrisponde a
rw-r--r--: il proprietario legge e scrive, il gruppo e gli altri possono solo leggere. È il valore normale dei file. - 755 corrisponde a
rwxr-xr-x: il proprietario ha tutti i diritti, il gruppo e gli altri possono leggere e attraversare. Il bit di esecuzione su una cartella serve a entrarci, non a lanciare un programma. È il valore normale delle directory.

I valori consigliati per WordPress
La documentazione ufficiale di WordPress fornisce uno schema semplice: tutte le directory a 755 e tutti i file a 644. Questi valori permettono al server web di leggere il sito e di servirlo, riservando la scrittura al proprietario dei file. Bastano per la grande maggioranza delle installazioni.
| Destinazione | Valore consigliato | Perché |
|---|---|---|
| Directory | 755 | Il server può attraversarle, solo il proprietario scrive |
| File | 644 | Lettura pubblica, scrittura riservata al proprietario |
| wp-config.php | 400 o 440 | Contiene le credenziali del database e le chiavi segrete |
| .htaccess | 644 (a volte 444) | Letto dal server; 444 se nessun plugin ha bisogno di scriverlo |
| wp-content/uploads | 755, senza esecuzione di PHP | Un file caricato non deve mai potersi eseguire |
Il caso particolare di wp-config.php
Questo file concentra i segreti del sito: credenziali di accesso al database, chiavi e salt di autenticazione. La documentazione di WordPress raccomanda di fare in modo che solo tu e il server web possiate leggerlo, il che si traduce in genere in un permesso 400 o 440. L'idea è togliere ogni diritto agli altri utenti del server, un punto delicato sugli hosting condivisi dove più siti condividono la stessa macchina.
Attenzione però: alcuni hosting impongono 640, 600 o persino 644 perché la loro configurazione PHP funzioni. Un buon metodo consiste nel puntare al valore più restrittivo e allentarlo di un solo livello se il sito restituisce un errore. Testa sempre la visualizzazione dopo una modifica.
Cosa è davvero pericoloso
La vera trappola non è scegliere 755 invece di 750. È applicare, spesso seguendo un consiglio trovato in fretta, permessi troppo aperti per far sparire un errore di tipo «permission denied».
- 777 su una cartella o un file. Permette a qualsiasi utente del server di scrivere, quindi di sostituire un file PHP con codice malevolo. Se un attaccante ottiene un punto d'ingresso tramite un plugin vulnerabile, una directory a 777 gli offre un posto dove depositare ed eseguire il suo payload. Non usare mai 777.
- L'esecuzione di PHP nella cartella dei caricamenti. Un modulo che accetta file filtrati male, combinato con una cartella
uploadscapace di eseguire PHP, è una ricetta classica per prendere il controllo. Questa cartella deve servire media, non avviare script. - Un wp-config.php leggibile da tutti. Su un server condiviso isolato male, un file di configurazione leggibile pubblicamente espone gli accessi al tuo database.
Proprietario e gruppo: l'altra metà dell'argomento
I permessi non dicono tutto. Bisogna anche sapere a chi appartengono i file. Sugli hosting moderni esistono due configurazioni.
- Il server web gira con il tuo account utente (caso frequente con PHP-FPM per pool, o con suPHP). I file ti appartengono, e 644 o 755 bastano perché WordPress scriva quando aggiorna un plugin.
- Il server web gira con un account distinto (per esempio
www-data). Bisogna allora che questo account appartenga al tuo gruppo, e a volte consentire la scrittura al gruppo, senza mai aprirla agli «altri».
In pratica, il tuo hosting ha già scelto un modello. Prima di modificare qualsiasi cosa, fai un backup completo e informati sulla sua configurazione. Permessi troppo restrittivi rompono gli aggiornamenti automatici; permessi troppo larghi semplificano la vita a un attaccante.
Rimettere ordine con due comandi
Se i tuoi permessi sono incoerenti, la documentazione di WordPress propone di reimpostarli con due comandi, da lanciare dalla radice del sito via SSH:
find /percorso/del/sito/ -type d -exec chmod 755 {} \;
find /percorso/del/sito/ -type f -exec chmod 644 {} \;
Applica poi il valore restrittivo a wp-config.php con chmod 400 wp-config.php, e verifica che il sito e l'amministrazione rispondano normalmente. Se non hai accesso SSH, la maggior parte dei file manager e dei client FTP permette di impostare questi stessi valori su una cartella e sul suo contenuto.
Il ruolo di WP Masquerade
Siamo chiari: WP Masquerade non modifica né i file del core né la configurazione del server, e quindi non cambia i tuoi permessi al posto tuo. L'impostazione dei diritti resta un compito da svolgere a livello di hosting. Il plugin agisce su un altro piano, complementare.
Da un lato, rende invisibili agli scanner i propri file (readme, traduzioni, file PHP) su Apache, LiteSpeed e o2switch, il che riduce gli indizi che un bot può raccogliere. Dall'altro, il suo controllo di integrità del core di WordPress confronta i tuoi file con le versioni ufficiali e segnala qualsiasi modifica inattesa, il sintomo tipico di un file riscritto grazie a permessi troppo aperti. Infine, la gestione degli indirizzi dei file rende più difficile individuare i percorsi standard. Queste misure non sostituiscono permessi corretti: si aggiungono a una base sana.
Verificare lo stato attuale dei tuoi file
Prima di correggere qualcosa, bisogna sapere da dove si parte. In SSH, il comando ls -l mostra i permessi sotto forma di lettere, e stat fornisce il valore ottale preciso di un file. Molti file manager degli hosting e client FTP mostrano anch'essi questi diritti, spesso in una colonna «Permessi» o con un clic destro sul file.
Concentra l'attenzione su alcuni punti sensibili: wp-config.php, la cartella wp-content/uploads, il file .htaccess alla radice e qualsiasi directory che mostri un 777. Individuare una sola anomalia in questi punti vale più che passare in rassegna migliaia di file dal comportamento normale.
Quando un permesso rompe una funzione
Anche i permessi troppo restrittivi hanno effetti visibili, che è utile saper ricondurre alla loro causa. Un aggiornamento di plugin che fallisce, un media impossibile da caricare, un file di cache che non si crea: questi sintomi tradiscono spesso un problema di diritti o di proprietario più che un bug di WordPress.
La tentazione è allora aprire molto i permessi perché «funzioni». È l'errore da evitare. L'approccio corretto consiste nel capire quale account deve scrivere e dove. Su un hosting condiviso la risposta ce l'ha in genere l'hosting, e la sua assistenza saprà dirti se il server web gira con il tuo account o con un account distinto. Una domanda all'assistenza costa meno di un sito esposto da un 777 lasciato «il tempo di provare» e poi dimenticato.
Da ricordare
- Regola di base: directory a 755, file a 644.
- wp-config.php: puntare a 400 o 440, allentare solo se l'hosting lo richiede.
- Non usare mai 777 e vietare l'esecuzione di PHP nella cartella dei caricamenti.
- Fai un backup prima di modificare, poi testa il sito e l'amministrazione.


