Instalei o awstats no meu novo servidor Ubuntu Lucid, mas quando o cron tenta executá-lo como usuário www-data
, ele reclama disso 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 a versão 1.3.22-1) os arquivos de log com uid = root e gid = adm, portanto, você ...
1) Altere os direitos dos arquivos de log em /etc/logrotate.d/apache para que www-data tenha pelo menos acesso de leitura.
2) Como 1), mas mude para um usuário específico e use o recurso suEXEC do Apache para executar o mesmo usuário (e altere o direito de / var / lib / awstats também ou use outro diretório). Isso é mais complicado, mas os logs geralmente não são acessíveis ao servidor (que provavelmente era o ponto do padrão do Apache).
3) Altere awstats.pl para agrupar adm (mas cuidado para que você corra o risco de permitir que um script CGI acesse as coisas de administrador na máquina!).
Eu usaria 1, mas quais são as permissões recomendadas para conceder?
fonte
chown www-data:www-data <yourFile>
e entãochmod 655 <yourFile>
.chmod 755 /var/log/apache2
echmod 644 access.log
, mas eu gostaria de uma resposta "essa é a melhor prática" :) Obrigado por comentar!Respostas:
Se você optar pelo ponto 1 e indicar que os dados www devem ter pelo menos permissão de leitura, o recomendado é conceder apenas leitura.
Você pode alterar a linha (no arquivo logrotate):
para
Para dar a todos os usuários (www-dados incluídos) permissão de leitura.
Você precisará alterar os arquivos existentes das permissões em / var / log / apache2 / para corresponder a essa configuração
Todos os arquivos poderão ser lidos por todos os usuários e todos os arquivos que a rotação de log criar no futuro terão as permissões necessárias.
fonte
Na maioria das configurações:
as configurações de propriedade e permissões podem ser encontradas no arquivo /etc/logrotate.d/apache2 , cujo conteúdo é:
A solução mais simples é:
1) Altere " create 640 root adm " para " create 644 root adm " em /etc/logrotate.d/apache2 usando seu editor de texto favorito ou, se você precisar criar um script para tudo:
2) Altere as permissões em /var/log/apache2/access.log e /var/log/apache2/error.log para 644 .
3) Reinicie o apache.
Já vi pessoas adicionando os dados www ao grupo de usuários adm como solução. São muito mais permissões para os dados www do que eu me sinto confortável.
Outras opções mais seguras envolvem a criação de um novo usuário e grupos para o awstats e a execução / execução do awstats como esse novo usuário / grupo.
fonte
/var/log/apache2
e tudo sob ele parawww-data
tornar os arquivos legíveis por grupo. Isso é um pouco menos permissivo do que torná-los legíveis pelo mundo.