Nuestros programadores estrellas agotaron sus reservas de café, en su búsqueda todo el tiempo por la respuesta, hasta que Linda encontró la solución en GitLab por lo tanto ahora la compartimos con nosotros.
Solución:
En general, todos los archivos deben ser 644
y todas las carpetas deben ser 755
y debe ser propiedad del usuario bajo el que se ejecuta su servidor web. los mage
se debe dar el ejecutable 550
permisos para permitir la ejecución.
Este script de shell debería arreglar las cosas si se ejecuta desde su raíz Mage:
#!/bin/sh
find . -type f -exec chmod 644 ;
find . -type d -exec chmod 755 ;
chmod 550 mage
Fuente: http://www.magentocommerce.com/wiki/groups/227/resetting_file_permissions
No he visto muchas menciones sobre el uso de 700 y 600, pero en general es un buen consejo. Desafortunadamente, la configuración de cada servidor es diferente y debe sopesarse frente a la conveniencia (acceso del usuario para actualizar/editar archivos).
El enfoque subyacente debe ser sólo dar lo menos posible y bloquéalo tanto como puedas (700/600 es bueno para esto). En ese sentido, el consejo “oficial” en el wiki quiere aplicarse a tantas circunstancias como sea posible y sugiere permisos de lectura para todos (lo que significa que cualquier otro servicio comprometido en el servidor podrá, por ejemplo, leer app/etc/local. xml con su configuración de base de datos).
En su caso, actualmente parece que los archivos son propiedad de un usuario diferente al que se ejecuta en su proceso de servidor web/php. Cambiar la propiedad de los archivos al servidor web debería resolver su problema original.
Tenga en cuenta que usar 700/600 y asignar los archivos al servidor web significa que su usuario normal no podrá editar los archivos.
Siento que lo siguiente es un buen compromiso entre conveniencia y bloqueo. Todos los archivos son propiedad de usuario:webservergroup
var y media 770 / 660
El servidor y su usuario pueden leer y escribir desde las carpetas var y media (sesión/caché/imágenes).
el resto 750 / 640
Su usuario puede editar/actualizar el código.
El servidor web puede leer los archivos para su ejecución/visualización.
Si bien la solución de Phil es buena, uso un enfoque un poco diferente. Además de hacer que el “usuario de php/servidor web” sea el propietario de los archivos, creo un grupo adicional. Por lo general, se llama desarrollador. Y agrego “usuario de php” y yo y otros desarrolladores a ese grupo desarrollador. Entonces lo hago chgrp para que todos los archivos en el subárbol del proyecto Magento tengan grupo desarrollador. añado +s poco a carpetas que garantiza que las subcarpetas recién creadas obtengan los mismos permisos.
Creé una esencia pública con mi secuencia de comandos fix_permissions.sh. Siéntase libre de usarlo 🙂 Le ayuda a mantener todo el subárbol de su proyecto Magento con buenos permisos.
https://gist.github.com/svenvarkel/8062778#file-fix_permissions-sh
La pregunta original: var y media deben tener permisos tales que el “usuario de php” pueda leer y escribir en estas carpetas. Debe poder escribir caché, archivos de sesión, etc. en var y debe poder escribir caché de imágenes de productos e imágenes en medios. Entonces haga lo que Phil aconseja: chown o chgrp estos a “usuario de php” y otorgue permisos rw a “usuario de php”.
Creo que es más correcto referirse a “usuario de php” en el contexto de FPM (CGI). El usuario del servidor web puede ser diferente al que ejecuta PHP.