Permissão negada ao executar logrotate com anacron

3

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?

    
por Question Overflow 11.07.2014 / 11:31

1 resposta

1

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.

    
por 28.03.2016 / 01:46