Eu tenho um site servido pelo Nginx e recentemente configurei compilações e implantações do Travis para ele.
Nginx está executando o site como www-data
usuário. Criei um usuário deploy
para que o Travis possa logar no servidor via SSH e implantar o site. Os arquivos implantados estão sendo armazenados com deploy
o usuário como proprietário, que é diferente do usuário que está executando o site ( www-data
).
Tenho medo de ter problemas de permissão ao executar o site com esta configuração. Devo usar o mesmo usuário www-data
/ deploy
para executar e implantar o site? Usando essa abordagem, terei problemas ao permitir que o usuário que executa o site faça login remotamente por meio de SSH?
Por favor, me esclareça sobre isso.
Responder1
Na verdade, os arquivos não devem pertencer a www-data
porque isso significa que o Nginx pode modificá-los, o que na maioria dos casos não é o que você deseja (a menos que seja um CMS que precise ser atualizado automaticamente).
Portanto, todos os arquivos devem pertencer a deploy
.
Se for um CMS e você precisar escrever em algumas pastas, então essas poucas (uma?) pastas devem realmente pertencer a www-data
. Isso pode causar um problema se a implantação também fizer a primeira instalação. Ofereça ao usuário a execução de uma etapa manual ou peça a uma ferramenta especial para fazer esse trabalho, mas se for algo único, basta fazê-lo manualmente, será bastante fácil (especialmente porque você só tem uma pasta como essa, certo?) O CMS também pode informar se existe esse problema e parar em vez de exibir páginas. Dessa forma, você sabe imediatamente e pode evitar problemas ao tentar fazer upload de um arquivo ou alguma ação semelhante.
É claro que os arquivos não pertencem a, www-data
mas precisam ser legíveis por www-data
. Portanto, torne-o legível para outras pessoas ( -rw-r--r--
) ou considere definir o grupo como www-data
( -rw-r-----
). Na maioria dos casos, já vi pessoas nem mesmo correrem o risco de usar o grupo. Eles apenas permitem que outras pessoas acessem os arquivos porque é mais seguro assim.
Claro, isso também significa que o Nginx não teria direitos de acesso ao deploy
usuário e ao grupo.