2013-09-16 13:33:11 +0000 2013-09-16 13:33:11 +0000
27
27

Concessão de permissões de escrita ao grupo www-data

Estou a criar um website e parte da função é escrever os dados gerados pelo utilizador com o php. Estou a utilizar nginx no Ubuntu 13.04. No momento em que estou apenas a testar e tudo é servido através do nginx no locahost.

O meu script php não escreve o ficheiro de texto (embora eu possa fazer isto manualmente) e penso que é um problema de permissões para escrever no meu directório /var/wwww/example.com/public_html.

De momento eu (iain) sou o proprietário deste directório mas parece que faria mais sentido transferir a propriedade do directório /var/wwww e tudo o que está dentro dele para o utilizador www-data (ou deveria ser grupo?) e adicionar-me ao grupo www-data. Será a seguinte a forma correcta de o fazer?

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

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

Respostas (1)

53
53
53
2013-09-16 13:53:44 +0000

Primeiro, useradd cria um novo utilizador. Como você (iain) já existe, quer chamar usermod em vez disso. Assim seria:

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

(note o -a em servidores baseados em Debian (Ubuntu incluído) que o adicionará a esse grupo, e manterá a sua adesão a outros grupos. Esqueça-o e pertencerá apenas ao grupo www-data - poderia ser uma má experiência se um deles fosse roda. Em servidores do tipo SUSE a opção é -A em vez de -aG por isso leia man usermod cuidadosamente para acertar).

Segundo, não quer que o apache tenha acesso total a /var/www: isto é potencialmente uma falha de segurança importante. Como regra geral, permita apenas o que precisa, e nada mais princípio do privilégio mínimo ). Neste caso, precisa do apache (www-data) e você (www-data grupo) para escrever (e ler) em /var/www/example.com/public_html, portanto

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 do www-data pode agora ler e executar /var/www (porque a última parte das suas permissões é 5 = ler + executar). Mas porque não utilizou a opção -R, isso aplica-se apenas ao /var/www, e não aos ficheiros e subdirectórios que este contém. Agora, se podem escrever é outra questão, e depende do grupo de /var/www, que ainda não definiu. Acho que é tipicamente root:root, por isso não, eles (provavelmente) não podem escrever.

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