Configurando permissões corretas para o upload de arquivos

10

Eu tenho um script php que envia um arquivo para um diretório chamado "uploads". A única maneira de fazer o upload funcionar é:

chmod 777 uploads

Eu sei que isso não está correto, mas não sei o que devo fazer para que funcione.

Informações do servidor: T1-Micro Amazon Linux AMI 2013.03 no Amazon EC2

Perguntas:

  • Como descubro o que os usuários precisam acessar ... por exemplo, qual é o nome de usuário do apache ou do servidor da Web?

  • Qual nível de acesso preciso dar e qual comando eu usaria para fazer isso?

Obrigado!

Editar: Eu encontrei muitas respostas sobre estouro de pilha que eu vou pesquisar. Por exemplo

link

link

link

Obrigado

    
por fun_programming 11.04.2013 / 05:50

1 resposta

16

Tente executar:

ps -ef | grep apache

e observe a coluna mais à esquerda correspondente ao servidor Apache. Este é o usuário que está executando o Apache e também por herança PHP.

Altere a propriedade do diretório de upload para esse usuário e restrinja um pouco as permissões, por exemplo, se o usuário do servidor web era www-data que pertence ao grupo de mesmo nome (usando um caminho de amostra de /var/www/uploads ):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(ou qualquer permissão que você queira nesta instância). Eu uso sudo nos comandos de exemplo - não sei exatamente como os sistemas EC2 são configurados a esse respeito para obter privilégios de superusuário.

Se você já enviou arquivos / diretórios, convém alterar a propriedade e as permissões deles também. Para fazer isso, passando de 777 para permissões mais razoáveis, você pode executar:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

Não execute "cegamente" comandos se você não entender cada parte deles. Verifique as páginas man se alguma coisa não estiver clara (deve ser bem direta).

    
por 11.04.2013 / 09:34