AWStats: não pode acessar /var/log/apache2/access.log

12

Eu instalei awstats no meu novo servidor Ubuntu Lucid, mas quando o cron tenta executá-lo como usuário www-data , ele reclama que cannot access /var/log/apache2/access.log: Permission denied .

Em /usr/share/doc/awstats/README.Debian , há este parágrafo:

  

Por padrão, o Apache armazena (desde   versão 1.3.22-1) arquivos de log com   uid = root e gid = adm, então você precisa   ou ...

     

1) Altere os direitos dos arquivos de log   em /etc/logrotate.d/apache para que       www-data tem pelo menos acesso de leitura.

     

2) Como 1), mas mude para um específico   usuário e use o recurso suEXEC do   Apache       para executar como o mesmo usuário (e alterar o direito de / var / lib / awstats   Como       bem ou use outro diretório). Isso é mais complicado, mas depois o   toras       geralmente não são acessíveis ao servidor (que era provavelmente o   ponto de       o padrão do Apache).

     

3) Altere awstats.pl para o grupo adm   (mas cuidado com o que você está tomando   a       risco de permitir um acesso ao script CGI para material administrativo no   máquina!).

Eu escolheria 1, mas quais são as permissões recomendadas para conceder?

    
por Joril 14.01.2011 / 09:39

2 respostas

8

Se você escolher o ponto 1 e ele disser que www-data deve ter pelo menos permissão de leitura, então o recomendado é grant only read.

Você pode alterar a linha (no arquivo logrotate):

create 640 root adm

para

create 644 root adm

Para conceder permissão de leitura a todos os usuários (www-data included).

Você precisará alterar os arquivos existentes com permissões em / var / log / apache2 / para corresponder a essa configuração

chmod a+r /var/log/apache2/* #or whatever your path is

Em seguida, todos os arquivos podem ser lidos por todos os usuários e todos os arquivos que criam logrotates no futuro terão as permissões adicionais

    
por theist 23.02.2011 / 13:24
4

Na maioria das configurações:

  • awstats é executado como seu usuário do apache www-data ;
  • os arquivos de log do apache são de propriedade de root: adm e possuem -rw-r ----- (aka: chmod 640 ) permissões; e
  • as configurações de propriedade e permissões podem ser encontradas no arquivo /etc/logrotate.d/apache2 , cujo conteúdo é:

    /var/log/apache2/*.log {
        daily
        missingok
        rotate 60
        compress
        delaycompress
        notifempty
        dateext
        create 640 root adm
        sharedscripts
        postrotate
                /etc/init.d/apache2 reload > /dev/null
        endscript }
    

A solução mais simples é:

1) Altere " crie 640 adm de raiz " para " crie adm de root 644 " em /etc/logrotate.d/apache2 usando seu editor de texto favorito ou, se precisar rotear tudo:

sudo sed -i 's/create 640 root adm/create 644 root adm/g' /etc/logrotate.d/apache2

2) Altere as permissões em /var/log/apache2/access.log e /var/log/apache2/error.log para 644 .

sudo chmod 644 /var/log/apache2/access.log /var/log/apache2/error.log

3) Reinicie o apache.

sudo apachectl -k graceful

Eu vi pessoas adicionando o www-data ao grupo de usuários adm como uma solução. Isso significa muito mais permissões para www-data do que me sinto confortável.

Outras opções mais seguras envolvem a criação de um novo usuário & amp; grupos para awstats e fazendo awstats executar / executar como este novo usuário / grupo.

    
por roberthernandez 15.07.2012 / 16:53