Como configurar corretamente as permissões do diretório do servidor web

2

Estou perdido com isso, espero encontrar alguma ajuda aqui:

Eu tenho o servidor web Ubuntu 12.04 LTS.

Por exemplo, eu tenho usuário "myuser". Existe um diretório público que é minha raiz da web. Eu fiz chown e todos os arquivos nele como www-data: www-data. Isso me permitiu o trabalho adequado do PHP, que pode criar / gravar arquivos como PHP e servidor web executado em www-data.

/home/myuser/public/

Meu problema é que quando eu transfiro arquivos com rsync através de ssh minhas permissões, usuário e grupo para os arquivos são alterados. Isso significa que depois de cada transferência eu tenho que fazer o meu chown novamente.

rsync -azv . -e ssh [email protected]/public/

Eu não tenho certeza se chown-ing os arquivos é o caminho "certo", mas eu segui este tutorial no DigitalOcean: link e eles fazem o seguinte:

sudo chown www-data:www-data * -R 
sudo usermod -a -G www-data username

Assim como em outros tutoriais.

Eu preciso de alguma forma, quando não vou precisar chown / chmod ou qualquer outro arquivo depois de cada transferência (o mesmo que funciona em hospedagem compartilhada)

Alguma idéia de como conseguir isso?

    
por depi 15.01.2014 / 09:46

1 resposta

2

Chown'ing os arquivos é um caminho, e não está errado. A questão é se é o caminho certo para você neste caso específico, que é outra questão completamente ...

Aqui estão algumas outras maneiras de fazer isso:

  • Se você executar o daemon rsync como root no servidor, poderá usar a opção -o | --owner para manter o mesmo proprietário do sistema local. Isso, obviamente, significa que os arquivos precisam ser propriedade de www-data no sistema em que você os edita também. Em alguns sistemas isso pode ser possível mesmo se o daemon rsync não estiver sendo executado como root; Você pode tentar adicionando --super às opções.

  • Você pode criar o diretório "setgid". Isso significa que todos os arquivos criados no diretório terão a mesma propriedade de grupo que o próprio diretório, em vez de ter o grupo principal como o proprietário do grupo. Você faz isso executando este comando: chmod g+s /home/myuser/public

  • Você pode fazer a transferência como o usuário "www-data" em vez de como você: Isso exige que os dados de www sejam permitidos para o login, o que aumenta o risco de comprometimento do sistema. Se você escolher isso apesar do risco, recomendo que os logins só sejam permitidos com chave pública em vez de com uma senha.

  • Em vez de fazer rsync, configure um sistema de controle de versão, por exemplo, git. Quando você editar o arquivo, verifique-o no repositório git. Então, em vez de fazer o rsync pelos arquivos, faça o login no seu servidor, sudo para www-data e baixe os arquivos do repositório.

por 17.01.2014 / 08:58