Cambiando Usuario/Grupo para permitir que PHP haga chmod/rename y move_upload_file()

Cambiando Usuario/Grupo para permitir que PHP haga chmod/rename y move_upload_file()

Parece que no puedo hacer nada con mi script PHP en mi VPS.

Devuelve "Permiso denegado" cuando intento cargar algo en un directorio.

Sí, he cambiado el permiso al 777 y funciona, pero no me gusta la inseguridad.

Al ejecutar el comando:

ps axu|grep apache|grep -v grep

Vuelve

 nobody    7689  0.1  3.8  50604 20036 ?        S    21:38   0:00 /usr/local/apache/bin/httpd -k start -DSSL
root     13600  0.0  3.8  50304 20348 ?        Ss   Jun06   0:46 /usr/local/apache/bin/httpd -k start -DSSL
nobody   15733  0.1  3.8  50700 20156 ?        S    21:39   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   15818  0.1  3.8  51492 20180 ?        S    21:39   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   23843  0.1  3.7  51336 19592 ?        S    21:40   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30335  0.0  3.5  50436 18496 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30406  0.0  3.5  50444 18544 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30407  0.0  3.5  50556 18696 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30472  0.0  3.6  50828 19348 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30474  0.0  3.5  50668 18868 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30476  0.0  3.6  50532 19064 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   30501  0.0  3.8  50556 20080 ?        S    21:36   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32341  0.0  3.5  50444 18492 ?        S    21:41   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32370  0.0  3.5  50444 18476 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32414  0.1  3.7  51336 19524 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32416  0.1  3.5  50668 18816 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32457  0.1  3.6  50828 19320 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32458  0.1  3.6  50772 19276 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32459  0.0  3.5  50444 18504 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32460  0.2  3.6  50828 19320 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32463  0.0  3.5  50444 18472 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody   32466  0.0  3.4  50436 17960 ?        S    21:42   0:00 /usr/local/apache/bin/httpd -k start -DSSL

El propietario del directorio es 'usuario [505]' y el grupo es 'usuario [508]' (como se ve en WinSCP)

¿Qué puedo hacer para cambiar el controlador Apache al propietario y grupo correctos para permitir que funcionen mis scripts PHP?

PD

Mi PHP no está configurado en modo seguro y open_basedir está configurado ensin valor

EDITAR:

Así es como se ve mi httpd.conf (para el dominio asociativo)

 <VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/domain/public_html
ServerAdmin info@domain
## User <theUsername> # Needed for Cpanel::ApacheConf
<IfModule mod_userdir.c>
    Userdir disabled
    Userdir enabled <userName>
</IfModule>
<IfModule mod_suphp.c>
    suPHP_UserGroup <userName> <userName>
</IfModule>
<IfModule !mod_disable_suexec.c>
    SuexecUserGroup <userName> <userName>
</IfModule>
CustomLog /usr/local/apache/domlogs/domain.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
CustomLog /usr/local/apache/domlogs/domain.com combined
ScriptAlias /cgi-bin/ /home/domain/public_html/cgi-bin/
#Options -ExecCGI -Includes
#RemoveHandler cgi-script .cgi .pl .plx .ppl .perl

Respuesta1

Necesitará los mismos derechos que el usuario que ejecuta el servidor web. Esto variará según su sistema operativo. Puede ser "apache" o "www-data" o algo completamente distinto.

A menos que estés usandosuEXEC, el servidor web ejecuta el script y, como tal, se ejecuta con los mismos permisos que ese usuario.

Entonces, para solucionar el problema, debe identificar con qué usuario se está ejecutando el proceso de Apache y aplicar los permisos apropiados a los archivos/carpetas que desea que el script pueda modificar.

Puede especificar la cuenta de usuario y grupo bajo la cual se ejecuta Apache en su archivo de configuración usando el

User=[username]
Group=[groupname]

directivas.

Eche un vistazo a su archivo de configuración; nuevamente, el nombre y la ubicación del archivo variarán según el sistema operativo. Proporcionar un poco más de detalles aquí puede ayudar a obtener una respuesta más directa.

editar: para Centos el archivo conf se encuentra en

/etc/httpd/conf/httpd.conf

Respuesta2

¡ACTUALIZAR!Si usted también tiene este problema, intente esto:

En WHM ve a:

Principal >> Configuración del Servicio >> Configuración de Apache >> Configuración de PHP y SuExec

Cambié Manejador PHP 5a: suphp.

Funcionó de maravilla

Respuesta3

cambie en WHM Principal >> Configuración del servicio >> Configuración de Apache >> Configuración de PHP y SuExec php hadler >> fcgi, resolverá el problema.

información relacionada