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.