Como o apache escreve para error_log & access_log

1

Estou executando um servidor ubuntu limpo e tenho o apache funcionando.

Percebi que o acesso do apache e os logs de erro eram de propriedade do root:

-rw-r----- 1 root adm 10531 Oct 11 00:43 access.log
-rw-r----- 1 root adm 58839 Oct 11 00:43 error.log

Eu estava imaginando como o apache realmente grava no log se ele é gravável apenas pelo root.

Está usando syslog por padrão?

Obrigado!

    
por hortitude 11.10.2009 / 03:39

2 respostas

3

O servidor apache é inicialmente iniciado como root, ele cria segmentos separados rodando como um usuário menos privilegiado (geralmente www-data) para o conteúdo do servidor. O processo principal do apache pode gravar nesses arquivos, pois ainda é executado como root.

    
por 11.10.2009 / 04:07
6

Hmmmm ..... do que eu posso dizer uma vez que um arquivo é aberto, as alterações nas permissões não importam. Os controles de acesso não são checados novamente a cada leitura / gravação, uma vez que o arquivo esteja aberto.

Assim, o que eu acho que acontece é o seguinte: o servidor apache de nível superior é executado como root (para que ele possa abrir a porta 80) e também abre os arquivos de log. Ao iniciar um subprocesso do servidor, ele provavelmente faz um fork () que copia os descritores de arquivos abertos para o novo subprocesso (ou seja, os descritores de arquivos de log entre um par de outros) e, portanto, os subprocessos podem gravar no log arquivos, mesmo que não seja root e, em seguida, altera o UID do subprocesso para o que for solicitado.

    
por 11.10.2009 / 05:12

Tags