Ogni «permesso negato» ha una risposta giusta e una pericolosa. Quella pericolosa è 777: funziona sempre, e significa che qualsiasi processo sul server può riscrivere il tuo codice.

Cosa sono le tre cifre

Proprietario, gruppo, tutti gli altri. Leggere vale 4, scrivere 2, eseguire 1, e si sommano: 6 è leggere e scrivere, 7 è tutte e tre.

  • 644 su un file: il proprietario scrive, tutti leggono.
  • 755 su una cartella: il proprietario scrive, tutti possono entrare ed elencare.
  • 600 su un segreto: il proprietario, e nessun altro al mondo.

Cosa serve a un sito

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 600 wp-config.php

Le cartelle hanno bisogno del permesso di esecuzione per essere attraversate; i file non ne hanno bisogno affatto. Un file PHP con 755 non è più eseguibile: il server web lo legge, non lo lancia come programma.

La parte sbagliata, di solito, è la proprietà

L'errore spesso non sta nei permessi ma nel proprietario. Se PHP gira come un utente e i file appartengono a un altro, nessun permesso al di sotto di 777 servirà — e la correzione giusta è il proprietario.

ps aux | grep php-fpm | head -2
chown -R youruser:youruser /path/to/site
777 su una cartella di caricamenti più un server che lì esegue PHP: è così che i siti vengono presi. Qualcuno carica un file e poi chiede al server di eseguirlo. I caricamenti non devono mai eseguire.

Impedisci ai caricamenti di eseguire

location ~* /uploads/.*\.php$ {
    deny all;
}
Se un plugin pretende 777 per funzionare, quello è un dato sul plugin. Dagli 775 con il gruppo giusto e parlane con il suo autore.