anacron을 사용하여 logrotate를 실행할 때 권한이 거부되었습니다.

anacron을 사용하여 logrotate를 실행할 때 권한이 거부되었습니다.

anacron다음 오류 메시지가 나에게 전송되는 원인을 파악하려고 합니다 .

/etc/cron.daily/logrotate:

/var/log/mariadb/mariadb.log-20140710.gz: Permission denied
error: error running last action script for /var/log/mariadb/*.log

관련 구성은 다음과 같습니다.

# /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
...

문제의 주요 구성은 다음과 같습니다.

# /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
}

위의 내용을 명령줄에서 테스트하면 # logrotate -f /etc/logrotate.conf오류가 없습니다. 그러나 anacron이 이를 실행하면 위와 같이 권한 거부 오류가 발생합니다. stat명령을 실행할 때 오류가 생성된 것 같습니다 .

관련 파일에 대해 다음과 같은 권한 설정이 있습니다

-rw-r-----. mysql mysql system_u:object_r:mysqld_log_t:s0 mariadb.log-20140711.gz

SELinux 컨텍스트는 괜찮아 보이고 로그에 avc 오류가 표시되지 않으므로 이는 SELinux로 인한 것이 아닙니다. 또한 from 은 cron.d루트 run-parts사용자로 실행되므로 권한 문제가 없어야 합니다.

나는 이것을 읽었다질문어떤 추천을 해야 할까요 strace? 그러나 나는 그것을 설치하지도 않았고 strace설치하는 것도 허용되지 않았습니다. 누구든지 권한 오류의 원인을 말해 줄 수 있습니까?

답변1

방금 조개로 이것을 겪었습니다. logrotate를 실행하는 사용자에게 /var/log/mariadb에 쓸 수 있는 권한이 있는지 확인하십시오.

구성 지시문 상단에 su root root를 사용해 보십시오.

관련 정보