Erro diário de logrotate criando um arquivo temporário exclusivo: Permissão negada

1

Eu tenho uma caixa do CentOS 6.7 que, por algum motivo, não roda os logs diariamente. Estou recebendo um e-mail semelhante a este todos os dias em / var / mail / root:

To: [email protected]
Content-Type: text/plain; charset="ANSI_X3.4-1968"
Subject: Anacron job 'cron.daily' on server.nl
Message-Id: <[email protected]>
Date: Wed,  9 Mar 2016 03:42:02 +0100 (CET)

/etc/cron.daily/logrotate:

error: error creating unique temp file: Permission denied

A execução de logrotate -vf /etc/logrotate.conf gira os logs conforme o esperado sem erros ou avisos. O SELinux está habilitado, então suspeitei que poderia ser a causa do erro de permissão negada, mas /var/log/audit/audit.log não tem entradas para nada nas últimas semanas.

Não sei como solucionar o que está causando falha no logrotate durante a noite enquanto ele funciona bem durante o dia, se eu o estiver executando manualmente.

Adição 10 de março: graças a Iain, consegui obter a saída do log do que o (ana) cron está fazendo durante a noite, no final de /tmp/logrotate.out estão as seguintes linhas:

@rotating pattern: /var/log/btmp  monthly (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/btmp
  log does not need rotating
set default create context
error: error creating unique temp file: Permission denied

Isso não era o que eu esperava, pois não é um erro relacionado aos logs dos aplicativos Rails que eu estava tentando solucionar. Por não se concentrar na mensagem de erro em si (que produziu apenas alguns acessos no Google em coreano e russo), mas mais sobre o problema real que estou tendo, encontrei tarefa cron do logrotate não rodando certos logs que é muito similar ao problema que estou tentando resolver (meus logs nginx rodam, pula os logs do Rails). Então, pode ser relacionado ao SELinux, afinal, mesmo que não tenha aparecido em audit.log . Estou tentando a solução postada lá.

    
por Rafe 09.03.2016 / 10:46

2 respostas

2

A primeira coisa que eu faria para tentar depurar isso seria modificar o script logrotate que o cron executa e fazer com que ele execute o logrotate no modo detalhado.

Meu script tem essa linha em /etc/cron.daily/logrotate

 /usr/sbin/logrotate /etc/logrotate.conf

Eu mudaria para

 /usr/sbin/logrotate -v /etc/logrotate.conf >>/tmp/logrotate.out 2>&1
    
por 09.03.2016 / 15:41
2

Você deve adicionar a opção -s para logrotate para especificar o caminho de um arquivo temporário (gravável).

    
por 10.05.2016 / 10:20