Apache principal pid como root, apesar de configurado para ser ninguém?

2

Acredito que configurei tudo corretamente quando construí o servidor (talvez tenha sido um LAMP pré-configurado que o host VPS Linode forneceu para configurar)

Parece que todo processo Apache é executado sob o usuário nobody, que é o que eu pretendia na configuração, porém o PID mais baixo (processo Apache mais longo) ainda está rodando sob o root, meus scripts PHP parecem reportar o usuário atual como root através de perguntar em phpinfo ().

isso é devido ao fato de que o root pode estar gerando o Apache, e seus filhos estão gerando corretamente sob o usuário nobody definido de acordo com sua configuração? Alguma das páginas atuais é processada através do processo raiz do Apache ou está lá apenas para ser um pai?

Estou um pouco preocupado, no entanto, não tenho nenhum problema em iniciar um novo Apache com uma nova mente para corrigir isso se for um pouco mais do que um contratempo de configuração.

Minor extra info edit: Parece que $ _SERVER ['user'] é root mesmo que $ _SERVER ['apache_run_user'] (similar a isso) mostre www-data (mesmo que não seja nobody), não tenho certeza se isso é Falha do PHP, talvez eu tente editar um arquivo raiz no PHP e veja ..

edit 2: nope, o PHP não pode editar arquivos raiz. Acho que $ _SERVER ['usuário'] (e um script de auditoria hacky) está errado em assumir que o PHP é a raiz então. ainda se perguntando sobre o processo Apache,.

    
por Alexander 05.07.2011 / 11:50

1 resposta

4

is this due to the fact root may be spawning Apache, and its children are spawning correctly under the defined nobody user as per its configuration?

Sim.

Do any of the actual pages get processed through that root Apache process or is it just there to be a parent?

Não, nenhuma página é processada pelo processo raiz e, sim, está lá apenas para ser pai. Precisa ser assim pela seguinte razão.

O Apache liga-se a uma porta privilegiada (ou seja, uma porta com um número baixo, até e incluindo 1023), principalmente 80 ou 443. Você precisa ser root para se ligar a uma porta privilegiada: é por isso que eles são chamados de 'privilegiados'. portas '.

Se você verificar o processo principal do sshd, verá que esse processo também é executado como root. Agora conecte-se através do ssh. As probabilidades são de que seu processo pessoal de sshd, bifurcado do principal, está sendo executado sob sua própria conta sem privilégios.

    
por 05.07.2011 / 12:13