acesso www-data aos arquivos de log

0

Eu tenho um script perl que funciona bem com sudo e analisa alguns arquivos de log em / var / log / no Ubuntu 14. Eu quero mostrar a saída do programa em uma página da web. Meu código de página da Web é muito simples:

<html><body>
<h1>Under construction</h1>
<?php
exec ("perl /usr/local/bin/pflogsumm -d yesterday --smtpd_stats /var/log/mail/mail.log > parsed_mail_log.txt");
echo "<pre><p style='font-family:monospace;'>".nl2br(file_get_contents("parsed_mail_log.txt"))."</p></pre>";
?>
</body></html>

Sem sudo, www-data (eu acho que é o usuário ao executar o script) não tem permissões para acessar /var/log/mail/mail.log e não conta o que eu quero. Ele produz material, mas apenas zeros no lugar dos números que eu queria verificar.

Minha pergunta é: qual deve ser a "boa" maneira de fazer isso?

Colocar www-data no grupo raiz para que ele possa ler o log não parece certo.

Talvez eu possa invocar um script com sudo, dentro de tal script invocar

sudo perl /usr/local/bin/pflogsumm -d yesterday...

E adicione o script anterior ao visudo para que o www-data possa executá-lo com o sudo sem solicitar autenticação. Mais uma vez, parece que não é a maneira "boa" ou "correta" de fazê-lo ...

Sugestões?

    
por rmarques 28.11.2016 / 18:14

2 respostas

0

Por que não executar uma tarefa cron (como root) todas as manhãs, que é executada

perl /usr/local/bin/pflogsumm -d yesterday --smtpd_stats /var/log/mail/mail.log > /path/to/parsed_mail_log.txt; chown www-data.www-data /path/to/parsed_mail_log.txt

(Assumindo o Ubuntu - use o proprietário apropriado do apache no chown), e então simplesmente execute a segunda parte no navegador

Isso seria muito mais seguro (sem executar scripts do navegador - menos na linha de comando), mais rápido - ele pode pré-processar os dados durante a noite fora dos horários de pico e não em tempo real e mais simples.

    
por 29.11.2016 / 10:40
0

O bom começo é ver quem é o proprietário e o grupo dos arquivos de log ( ls -l /var/log/mail/mail.log ). Tê-los publicamente legíveis geralmente não é uma boa ideia. Em seguida, verifique quais grupos são www-data em: groups www-data deve informar você.

Você pode

  • ajuste as permissões no arquivo para serem acessadas pelo usuário (provavelmente não muito claras)
  • ajusta os grupos de usuários para acessar esses arquivos (grupo existente do arquivo)

Usar senha sudo em scripts não é uma boa ideia.

    
por 29.11.2016 / 10:22