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.drootrun-partsユーザーとして実行されるため、権限の問題はありません。

私はこれを読んだ質問どんな推薦をするべきですかstrace?しかし、私はそれをインストールしなかったし、straceインストールすることも許されませんでした。誰でも権限エラーの原因を教えてもらえますか?

ベストアンサー1

ちょうど貝殻でこれを経験しました。 logrotateを実行しているユーザーに/var/log/mariadbに書き込む権限があることを確認してください。

構成ディレクティブの上部にsu root rootを使用してみてください。

おすすめ記事