Diretiva Sudo para ler um arquivo de log

1

Isso funciona:

apache ALL=(ALL) NOPASSWD:ALL

mas isso não acontece:

apache ALL=(ALL) NOPASSWD:/var/log/maillog

Ele diz: "sudo: no tty present e nenhum programa askpass especificado".

O caminho está correto. Estou faltando alguma coisa aqui? Pensamentos?

A adição de um espaço após NOPASSWD: não funcionou. Eu estou chamando um arquivo .sh do PHP que tem isso:

#!/bin/sh
grep bounced /var/log/maillog

Eu adicionei um caminho para o script e o arquivo de log, mas isso simplesmente não funciona.

    
por tgurske 01.10.2015 / 02:13

1 resposta

1

A linha sudoers

apache ALL=(ALL) NOPASSWD:/var/log/maillog

permite que o usuário apache execute o arquivo /var/log/maillog . Mas seu script executa grep , então essa linha não se aplica.

Sudo funciona por comando. Não há como usá-lo para permitir o acesso a um arquivo específico com qualquer comando. Você poderia permitir o comando grep bounced /var/log/maillog , se é isso que você quer. Mas se o que você deseja é simplesmente permitir que o usuário apache leia /var/log/maillog com qualquer programa, então o que você deve fazer é adicionar apache à lista de controle de acesso daquele arquivo.

setfacl -m user:apache:r /var/log/maillog

Este comando precisa ser executado toda vez que o arquivo é recriado devido à rotação do log. Isso é feito automaticamente com versões recentes de logrotate . Se a sua versão for muito antiga, adicione esse comando à sua configuração de logrotate como um postrotate entry .

    
por 01.10.2015 / 02:43

Tags