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
rootrun-parts
ユーザーとして実行されるため、権限の問題はありません。
私はこれを読んだ質問どんな推薦をするべきですかstrace
?しかし、私はそれをインストールしなかったし、strace
インストールすることも許されませんでした。誰でも権限エラーの原因を教えてもらえますか?
ベストアンサー1
ちょうど貝殻でこれを経験しました。 logrotateを実行しているユーザーに/var/log/mariadbに書き込む権限があることを確認してください。
構成ディレクティブの上部にsu root rootを使用してみてください。