Concedendo permissões de gravação ao grupo de dados www

18

Estou criando um site e parte da função é escrever dados gerados pelo usuário com o php. Estou usando o nginx no Ubuntu 13.04. No momento em que estou apenas testando e tudo é servido através do nginx no locahost.

Meu script php não consegue gravar o arquivo de texto (embora eu possa fazer isso manualmente) e acho que é um problema de permissão para gravar no meu diretório /var/www/example.com/public_html.

No momento eu (iain) possuo este diretório, mas parece que faria mais sentido transferir a propriedade do diretório / var / www e tudo dentro dele para o usuário www-data (ou deveria ser grupo?) e adicione-me ao grupo www-data. O seguinte é o caminho certo para fazer isso?

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

Então, isso significa que qualquer pessoa no grupo www-data agora pode ler, escrever e executar em / var / www?

    
por duff 16.09.2013 / 15:33

1 resposta

42

Primeiro, useradd cria um novo usuário. Como você (iain) já existe, você quer chamar usermod . Então isso seria:

sudo usermod -aG www-data iain
addgroup www-data

(observe o -a nos servidores baseados em Debian (incluindo o Ubuntu) que irá adicionar você a esse grupo e manter sua associação a outros grupos. Esqueça isso e você pertencerá ao grupo www-data somente - pode ser uma experiência ruim se um deles foi roda Em servidores do tipo SUSE a opção é -A em vez de -aG então leia man usermod cuidadosamente para acertar.)

Em segundo lugar, você não quer que o apache tenha acesso rw completo a /var/www : isso é potencialmente uma grande falha de segurança. Como regra geral, permita somente o que você precisa, e nada mais ( princípio do menor privilégio ). Neste caso, você precisa do apache ( www-data ) e de você ( www-data group) para escrever (e ler) em /var/www/example.com/public_html , então

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html

Editar : para responder sua pergunta original, sim, qualquer membro de www-data agora pode ler e executar /var/www (porque o último bit de suas permissões é 5 = ler + exec). Mas como você não usou a opção -R , isso se aplica somente a /var/www , e não aos arquivos e subdiretórios contidos nela. Agora, se eles podem escrever é outra questão e depende do grupo de /var/www , que você não definiu. Eu acho que é tipicamente root:root , então não, eles (provavelmente) não podem escrever.

Editar em 2014-06-22 : adicionou uma observação de que a opção -aG é válida em servidores baseados no Debian. Ele aparentemente varia com a distribuição, então leia man cuidadosamente antes de executar.

    
por 16.09.2013 / 15:53