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를 사용해 보십시오.