WSGIDaemonProcess: especificando um usuário

2

Eu tenho uma conta de usuário configurada para este webapp do Python que estou implementando com o mod_wsgi. É superprivilegiado, e só consegue ler no appdir e escrever em um conjunto separado de tempdirs que ninguém mais consegue ver. Estou usando a seguinte configuração:

WSGIDaemonProcess xlsxf_daemon user=xlsxf group=xlsxf

Simples o suficiente. Infelizmente, temos isso dos documentos sobre a opção user :

Note that this option is ignored if Apache wasn't started as the root user, in which case no matter what the settings, the daemon processes will be run as the user that Apache was started as.

Como estou executando isso em uma instalação padrão do Ubuntu no Linode, o Apache inicia como o usuário www-data e o aplicativo Python que confirme está condenado a também ser executado como www-data . Por que a limitação acima? Tenho muitos aplicativos Ruby / Passenger que funcionam como outros usuários.

edit : OK, então o Apache não começa como o usuário www-data , mas ainda estou vendo que a webapp do Python é executada como www-data em apesar da linha de configuração acima. / edit

Alternativamente, estou apenas sendo excessivamente paranóico aqui? Tenho vários projetos diferentes sendo executados neste servidor e gostaria que todos fossem executados como usuários separados, "apenas no caso", mas sinta-se à vontade para dizer que eu deveria desistir e transferir as permissões para www-data .

edit2 : conforme solicitado, veja todos os processos do apache em execução:

root     18798  0.0  1.9  16156  9880 ?        Ss   Jul26   0:03 /usr/sbin/apache2 -k start
www-data 19344  0.0  1.0  15208  5264 ?        S    Jul26   0:00 /usr/sbin/apache2 -k start
xlsxf    19361  0.0  1.2 155244  6620 ?        Sl   Jul26   0:02 /usr/sbin/apache2 -k start
www-data 19379  0.0  3.2 245436 16420 ?        Sl   Jul26   0:01 /usr/sbin/apache2 -k start
www-data 19380  0.0  3.2 243536 16496 ?        Sl   Jul26   0:01 /usr/sbin/apache2 -k start
    
por Clint Tseng 26.07.2011 / 09:26

2 respostas

3

Você está lendo errado. O Apache começa como 'root' e o processo pai do Apache permanece como 'root', somente o processo filho do servidor Apache é executado como 'www-data'. Os processos do daemon mod_wsgi são bifurcados do processo pai 'root' e, portanto, ainda poderão ser alterados para esse usuário.

O que o comentário está dizendo é que, se você iniciar o Apache a partir de uma conta totalmente sem privilégios, por exemplo, ao sair da instalação do Apache no seu diretório pessoal ou em outro lugar, ele não será iniciado como 'root' Não é possível alterar o ID do usuário dos processos do daemon. O Apache começou a partir de scripts de inicialização do sistema, embora seja sempre iniciado como 'root' e não deve ser um problema.

    
por 26.07.2011 / 10:40
0

usuário e grupo funcionam se você tiver sua linha de configuração WSGIDaemonProcess correta. Eu mesmo usei.

Aqui estão minhas linhas de configuração

WSGISocketPrefix /var/run/wsgi

<VirtualHost xx.xx.xx.xx:80>

WSGIDaemonProcess somedomain.com user=somedomain group=somedomain python-path=/home/somedomain/mysite:/home/somedomain/venv/myvenv/lib/python2.7/site-packages
...
...
...
</VirtualHost>

No entanto, você geralmente não deseja fazer isso por motivos de segurança. Se você executar seu servidor da Web como o mesmo usuário que tenha permissões de gravação em sua página da Web / home, isso representará um risco de segurança. Em geral, é melhor deixar de usá-los e deixá-los rodar como o usuário padrão do apache. Apenas certifique-se de que o apache pertença ao grupo que tenha permissões de leitura e execução em sua pasta da Web.

NOTA: Veja como eu tenho esse WSGISocketPrefix / var / run / wsgi fora da seção do host virtual. O daemon WSGI não funcionaria sem isso.

    
por 07.10.2015 / 03:20