Cada «permiso denegado» tiene una respuesta correcta y otra peligrosa. La peligrosa es 777: siempre funciona, y significa que cualquier proceso del servidor puede reescribir tu código.
Qué son los tres dígitos
Propietario, grupo y todos los demás. Leer vale 4, escribir 2, ejecutar 1, y se suman: 6 es leer y escribir, 7 son las tres.
- 644 en un archivo: el propietario escribe, todos leen.
- 755 en un directorio: el propietario escribe, todos pueden entrar y listar.
- 600 en un secreto: el propietario, y absolutamente nadie más.
Lo que necesita un sitio
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 600 wp-config.php
Los directorios necesitan el permiso de ejecución para poder entrar en ellos; los archivos no lo necesitan en absoluto. Un archivo PHP con 755 no es más ejecutable: el servidor web lo lee, no lo lanza como un programa.
Lo que suele estar mal es la propiedad
El error muchas veces no está en los permisos sino en el propietario. Si PHP corre como un usuario y los archivos son de otro, ningún modo por debajo de 777 servirá, y el arreglo correcto es el propietario.
ps aux | grep php-fpm | head -2
chown -R youruser:youruser /path/to/site
777 en un directorio de subidas más un servidor que ejecuta PHP ahí: así se toman los sitios. Alguien sube un archivo y luego le pide al servidor que lo ejecute. Las subidas no deben ejecutarse jamás.
Impide que las subidas se ejecuten
location ~* /uploads/.*\.php$ {
deny all;
}
Si un plugin exige 777 para funcionar, eso es un dato sobre el plugin. Dale 775 con el grupo adecuado y coméntaselo a su autor.