Qual conta de usuário deve ser usada para WSGIDaemonProcess?

1

Eu tenho alguns sites do Django implantados usando o Apache2 e o mod_wsgi. Ao configurar a diretiva WSGIDaemonProcess, a maioria dos tutoriais (incluindo a documentação oficial) sugere a execução do processo WSGI como o usuário em cujo diretório inicial reside o código. Por exemplo:

WSGIScriptAlias / /home/joe/sites/example.com/mod_wsgi-handler.wsgi
WSGIDaemonProcess example.com user=joe group=joe processes=2 threads=25

No entanto, gostaria de saber se é realmente sensato executar o processo do daemon wsgi como o mesmo usuário (com seus privilégios de atendente) que desenvolve o código. Devo configurar uma conta de serviço cujo único privilégio é o acesso somente leitura ao código, a fim de ter melhor segurança? Ou as minhas preocupações são exageradas?

    
por Nathan S 10.03.2011 / 06:04

3 respostas

2

É uma boa prática geral administrar seus serviços com contas sem privilégios quando possível. Para processos que precisam de recursos somente de raiz (portas < 1024, acessando certos arquivos) o processo deve adquiri-los e imediatamente privilégios de descarte.

Algumas outras dicas. Da sua frase "executar o ... processo como o mesmo usuário ... que desenvolve o código", parece que os desenvolvedores estão escrevendo código nos hosts de produção. Você está usando algum tipo de sistema de controle de alterações de origem (por exemplo, git, svn)? Os desenvolvedores devem codificar em máquinas somente de desenvolvimento e se comprometer com um repositório compartilhado, a partir do qual você pode liberar construções estáveis. Implante código do repositório depois de ser testado para integração e, idealmente, empacote-o para instalação (DEB, RPM, EGG, etc). Isso reduzirá os erros que caem na produção, tornará as versões repetitivas, evitará a perda de código se um host falhar, e assim por diante.

    
por 10.03.2011 / 08:25
0

É melhor você chown www-user: www-data -R nome do seu código (Ou apache: apache). Os dados mais importantes do seu PC são seus dados usuário , portanto, mover os serviços para longe do usuário é melhor.

    
por 10.03.2011 / 08:04
0

A razão que você acha que o usuário deve ser o diretório home é porque em muitos sistemas o diretório home tem permissões de 'drwx ------' o que significa que apenas o usuário pode ler coisas lá . Então, basicamente, você não tem escolha se vai colocar coisas em um diretório pessoal de um usuário.

Você também acharia sugerido que, portanto, é melhor não tê-lo em seu diretório home e, em vez disso, colocá-lo em outro servidor web, mas não sob o DocumentRoot de qualquer servidor virtual ou servidor principal. Ao fazer isso, as restrições de diretório não serão aplicadas e o usuário do Apache poderá lê-lo.

No geral, a melhor idéia, especialmente se a caixa também for sua própria máquina de desenvolvimento, é fazer uma implementação separada do código nessa área separada, tornando os arquivos de código não graváveis e, em seguida, executando tudo como um usuário não privilegiado dedicado separado.

    
por 12.03.2011 / 00:13