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 .