Estoy configurando mi sitio y necesito mover algunos archivos. Creé un script PHP simple que involucraba cosas como mkdir(), copy(), etc... pero obtengo errores de permisos.
Después de configurar las carpetas afectadas en 777, todo funciona, pero en mi sitio anterior estaba configurado en 755.
Si mi usuario en Plesk es Johnnie y el usuario en el archivo es Johnnie (y el grupo es psacln), ¿no debería tener acceso el script PHP? Si no es así, ¿qué necesito configurar para que el usuario pueda mover archivos en mi navegador?
Respuesta1
¿A qué te refieres con acceso? - ver los atributos del archivo; - abrir el archivo para leerlo; - abrir el archivo para escribir; - abrir el archivo para lectura/escritura; - para abrir el archivo para ejecutar.
Tenga en cuenta que el nombre de usuario en la aplicación PHP no es el mismo que el del usuario de Unix, incluso si tienen el mismo nombre.
Tenga en cuenta que apache/php se ejecuta como apache, www, www-data, nadie... usuario. Esto se configura en la configuración de Apache. Encuentra esto con:
egrep -r '^User|^Group' /etc/{apache*,http*}
Antes de cualquier cambio, ejecute una copia de seguridad.
Encuentre un grupo común del que formen parte su usuario y el usuario de Apache. Si no, crea uno.
Cambia el grupo de archivos y carpetas que tienes en DocumentRoot para que sea este grupo:
chown -R myuser:commongroup /var/www/
Cambie el SUID de las carpetas para que los archivos nuevos sean propiedad de ese grupo:
find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/
Para las carpetas y archivos a los que desea darle acceso a PHP para escribir, haga:
chmod g+w /var/www/folder/subfolder /var/www/folder/file.txt
Respuesta2
Si está utilizando php a través de cgi o mod-php sin parches/módulos adicionales para gestionar los permisos, entonces su script php probablemente se esté ejecutando con la cuenta del servidor web. Con frecuencia se trata de www-data, de nadie o de alguna otra cuenta que no sea root.
Probablemente necesite agregar al grupo el usuario que ejecuta el servidor web, o crear un grupo que incluya el servidor web y cualquier otro usuario que necesite acceso.