O usuário quer que o PHP consiga gravar arquivos em seu diretório

1

O usuário quer deixar o PHP gravar arquivos em seu diretório / home /, ele está me aconselhando a fazer usermod -a -G www-data username onde username é seu nome de usuário. Eu não tinha certeza se isso era um problema de segurança ou não.

Qual é a melhor maneira de abordar isso?

    
por ParoX 31.08.2010 / 16:28

2 respostas

1

O comando proposto adiciona o usuário ao grupo www-data . Isso pode dar a ele permissões extras não intencionais, em particular, ele poderá acessar qualquer arquivo restrito ao grupo www-data . Isso é provavelmente muito mais do que você pretendia.

Por exemplo, suponha que dois usuários façam essa solicitação e sejam adicionados ao grupo www-data , e cada usuário abre ~/www-shared para o grupo www-data . Em seguida, cada um poderá ler e escrever no diretório www-shared do outro.

As listas de controle de acesso parecem muito mais apropriadas para o propósito declarado. Isso requer que o sistema operacional e o sistema de arquivos suportem ACLs. No Linux, certifique-se de que o sistema de arquivos esteja montado com a opção acl . Em seguida, o usuário pode executar setfacl -m user:www-data:rwx ~/www-shared para compartilhar um diretório com o usuário www-data .

Ainda assim, esse problema parece com algo que muitas pessoas executando servidores da web já enfrentaram antes. Portanto, pode haver uma solução muito melhor envolvendo a caixa de ferramentas do Apache.

    
por 31.08.2010 / 23:01
0

Isso não é uma boa ideia porque o usuário www-data estará no grupo do usuário. Assim, o servidor pode manipular todos os arquivos desse usuário.

Além disso, qualquer outro usuário do sistema pode ler e escrever nos arquivos do usuário através de um simples script php.

Geralmente, não é uma boa ideia dar ao servidor da Web mais acesso de gravação / leitura do que o necessário. Então você pode querer alargar as permissões apenas no diretório (ou mesmo no arquivo) que precisa de acesso de gravação. Isso pode ser um diretório de upload, por exemplo.

como ...

chgrp www-data /home/foobar/public_html/wordpress/uploads
chmod -R g+rwX /home/foobar/public_html/wordpress/uploads
    
por 31.08.2010 / 16:38