Alterando usuário/grupo para permitir que o PHP faça chmod/renomeie e mova_upload_file()

Alterando usuário/grupo para permitir que o PHP faça chmod/renomeie e mova_upload_file()

Parece que não consigo fazer nada com meu script PHP no meu VPS.

Ele retorna 'Permissão negada' quando tento fazer upload de algo para um diretório.

Sim, mudei a permissão para 777 e funciona, mas não gosto da insegurança

Ao executar o comando:

ps axu|grep apache|grep -v grep

Ele retorna

 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

O proprietário do diretório é 'user [505]' e o grupo é 'user[508]' (como visto no WinSCP)

O que posso fazer para alterar o Apache Handler para o proprietário e grupo corretos para permitir que meus scripts PHP funcionem?

PS

Meu PHP não está configurado para modo de segurança e o open_basedir está configurado parasem valor

EDITAR:

Esta é a aparência do meu httpd.conf (para o domínio associativo)

 <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

Responder1

Ele precisará dos mesmos direitos do usuário que está executando o servidor web. Isso irá variar dependendo do seu sistema operacional. Pode ser "apache" ou "www-data" ou algo totalmente diferente.

A menos que você esteja usandosuEXEC, o script é executado pelo servidor da web e, como tal, é executado com as mesmas permissões desse usuário.

Portanto, para corrigir o problema, você precisa identificar em qual usuário o processo Apache está sendo executado e aplicar as permissões apropriadas aos arquivos/pastas que você deseja que o script possa modificar.

Você pode especificar a conta de usuário e grupo em que o Apache é executado em seu arquivo conf usando o

User=[username]
Group=[groupname]

diretivas.

Dê uma olhada no seu arquivo conf, novamente o nome e a localização do arquivo variam de acordo com o sistema operacional. Fornecer um pouco mais de detalhes aqui pode ajudar com uma resposta mais direta.

editar: para Centos o arquivo conf está localizado em

/etc/httpd/conf/httpd.conf

Responder2

ATUALIZAR!Se você também está tendo esse problema, tente isto:

No WHM acesse:

Principal >> Configuração de serviço >> Configuração Apache >> Configuração PHP e SuExec

Eu mudei Manipulador PHP 5para: suphp.

Funcionou muito bem

Responder3

mudança no WHM Principal >> Configuração do Serviço >> Configuração do Apache >> Configuração do PHP e SuExec php hadler >> fcgi,, isso resolverá o problema.

informação relacionada