Suas mensagens de erro originais não fazem sentido com o que você está mostrando para o seu cron que executa o logrotate
.
rotating pattern: /home/mail3/log/popMailProcessing.log forced from command line (60 rotations)
empty log files are rotated, old logs are removed
considering log /home//log/popMailProcessing.log
error: stat of /home/mail3/log/popMailProcessing.log failed: Permission denied
O que esses caminhos estão fazendo indo para /home/mail3/log/*
? Também está faltando a linha /home//log/popMailProcessing.log
? Parece que você está mostrando apenas algumas das situações reais da sua pergunta.
Depurando o problema
Coloque esta linha em um script de shell, logrotate.sh
:
#!/bin/bash
/usr/sbin/logrotate -f -v /etc/logrotate.d/mail3-logs &>> /var/log/logrotate/rotate.log
Torne-o executável e execute-o assim do cron:
03 00 * * * root strace -s 2000 -o /tmp/strace.log /path/to/logrotate.bash
Ao passar pela saída, você deve ver o que está sendo enganado pelos problemas de permissão.
EDIT # 1
Depois de conversar com o OP, ele mencionou que a técnica de depuração acima descobriu que o SELinux estava habilitado. Ele ficou perplexo a respeito de porque esse era o caso, já que ele havia desativado anteriormente com o comando setenforce 0
.
Desativar o SELinux dessa maneira só permanecerá nesse estado até a próxima reinicialização. O modo padrão para o SELinux é ditado por este arquivo no Fedora / CentOS:
$ cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
Para desabilitar permanentemente o SELinux, você desejará alterar a linha SELINUX=..
para um dos três estados, enforcing
, permissive
, disabled
.
Eu encorajaria você, entretanto, a tomar um tempo para entender por que o SELinux está desautorizando o acesso ao diretório em que esses arquivos de log estão, e adicionar o contexto apropriado para que o SELinux permita este acesso. O SELinux é uma parte importante do modelo de segurança em camadas que é facilitado em distribuições do Linux que fazem uso dele, e desativá-lo cegamente está removendo uma das camadas críticas.