Como executar o HTTPD como usuário (s) específico (s) e não por ninguém?

6

Atualmente, top mostra que quase todos os processos httpd são executados por nobody . "Quase" porque 2 deles são executados por root .

Como posso fazer isso de forma que, se eu disser que os usuários dizem: dartagnan , porthos , aramis , athos executam o httpd separadamente como usuários?

Espero ver algo assim quando eu executar top :

PID  USER      Command
1234 dartagnan /usr/local/apache/bin/httpd -k start -DSSL
12   porthos   /usr/local/apache/bin/httpd -k start -DSSL
342  aramis    /usr/local/apache/bin/httpd -k start -DSSL
214  athos     /usr/local/apache/bin/httpd -k start -DSSL 

============ > Isso é o que eu tenho atualmente e o que eu NÃO gosto de ver:

PID  USER      Command
1234 nobody    /usr/local/apache/bin/httpd -k start -DSSL
12   nobody    /usr/local/apache/bin/httpd -k start -DSSL
342  nobody    /usr/local/apache/bin/httpd -k start -DSSL
214  nobody    /usr/local/apache/bin/httpd -k start -DSSL 
244  root      /usr/local/apache/bin/httpd -k start -DSSL 
334  root      /usr/local/apache/bin/httpd -k start -DSSL 
    
por Jiego Cordoviz 03.07.2014 / 09:41

1 resposta

6

A maneira de executar o httpd como um grupo de usuários diferente é alterar o usuário ou a diretiva group no arquivo httpd.conf.

User apache
Group apache

Isso só mudaria o nobody em sua saída para apache , o que não é o que você deseja.

Para que o httpd seja executado como um usuário específico, você precisará criar e gerenciar um arquivo de configuração para cada um deles. O arquivo de configuração deve especificar o usuário e o grupo apropriadamente, bem como a porta para a qual o processo httpd deve se vincular por meio de um Ouça a diretiva . Lembre-se de que apenas usuários privilegiados podem se ligar a portas < 1024. Você pode então começar assim

apachectl -f /path/to/aramis.conf -k start -DSSL

Observe outras diretivas do httpd, por exemplo O VirtualHost provavelmente precisará mudar também por usuário.

Além disso, as variantes EL (RHEL, CentOS Scientific Linux, etc.) estão envolvidas no SELinux. Você terá que adicionar a porta à qual cada instância se ligará, ao http_port_t group, por exemplo.

semanage port -a -t http_port_t -p tcp 8888

que permitiria que uma instância httpd se ligasse à porta 8888.

Se os usuários usarem seus diretórios iniciais para servir arquivos, você terá que permitir isso com o httpd_enable_homedires SELinux booleano

 setsebool -P httpd_enable_homedirs on

Os itens acima devem permitir que você configure instâncias de usuário do httpd. No entanto, cada usuário terá que lembrar qual porta usar para adicionar aos seus URLs, por exemplo, para aramis acima

http://example.com:8888

Isso tudo é muito confuso. Para ajudar seus usuários a sair, você deve configurar seu httpd principal para escutar na porta 80 como de costume e agir como um proxy reverso para as instâncias por usuário. Então, quando aramis se conecta a, por exemplo,

http://aramis.example.com 

o proxy do servidor principal é a instância do aramis.

Você terá que configurar o DNS e possivelmente outras coisas apropriadamente também.

    
por 03.07.2014 / 10:34