Acabei de passar por isso com o clamd. Certifique-se de que o usuário que está executando o logrotate tenha permissão para gravar em / var / log / mariadb.
Experimente raiz raiz su no topo da diretiva de configuração.
Estou tentando descobrir o que está causando anacron
a enviar a seguinte mensagem de erro:
/etc/cron.daily/logrotate:
/var/log/mariadb/mariadb.log-20140710.gz: Permission denied
error: error running last action script for /var/log/mariadb/*.log
Estas são as configurações relevantes:
# /etc/cron.d
01 * * * * root run-parts /etc/cron.hourly
------------------------------------------
# /etc/cron.hourly/0anacron
...
/usr/sbin/anacron -s
------------------------------------------
# /etc/anacrontab
...
1 5 cron.daily nice run-parts /etc/cron.daily
------------------------------------------
# /etc/cron.daily/logrotate
/usr/sbin/logrotate /etc/logrotate.conf
...
------------------------------------------
# /etc/logrotate.conf
...
include /etc/logrotate.d
...
Esta é a configuração principal em questão:
# /etc/logrotate.d/mariadb
/var/log/mariadb/*.log {
create 640 mysql mysql
missingok
sharedscripts
nodelaycompress
postrotate
.....
lastaction
dir="/var/log/mariadb/"
today=$(date -u +%Y%m%d)
attach1=$(ls -t1 ${dir}mariadb*gz 2>&1 head -1 | grep $today)
....
attachment=""
totalsize=0
if [[ $attach1 ]]; then
attachment+=" -a $attach1"
totalsize=$((totalsize + $(stat -c %s $attach1)))
fi
....
endscript
}
Quando eu testei o acima na linha de comando com # logrotate -f /etc/logrotate.conf
, não há erro. Mas quando o anacron está rodando, ele recebe permissão de erro negado, como mostrado acima. Eu estou supondo que o erro é gerado quando ele executa o comando stat
.
Eu tenho a seguinte configuração de permissão para o arquivo em questão
-rw-r-----. mysql mysql system_u:object_r:mysqld_log_t:s0 mariadb.log-20140711.gz
O contexto do SELinux parece bem para mim e não vejo nenhum erro avc no meu diário, então não deve ser devido ao SELinux. Além disso, a partir de cron.d
, run-parts
é executado com raiz como usuário, portanto, não deve haver um problema de permissão.
Eu li esta pergunta sobre a qual a recomendação é fazer strace
. Mas eu não tenho strace
e não tenho permissão para instalá-lo. Existe alguém que possa me dizer o que está causando o erro de permissão?
Acabei de passar por isso com o clamd. Certifique-se de que o usuário que está executando o logrotate tenha permissão para gravar em / var / log / mariadb.
Experimente raiz raiz su no topo da diretiva de configuração.
Tags permissions cron logrotate selinux