web-dev-qa-db-ja.com

一意の一時ファイルを作成する毎日のlogrotateエラー:権限が拒否されました

CentOS 6.7ボックスがあり、なんらかの理由で毎日ログをローテーションできない。/var/mail/rootで毎日これに似た電子メールを受け取っています。

To: [email protected]
Content-Type: text/plain; charset="ANSI_X3.4-1968"
Subject: Anacron job 'cron.daily' on server.nl
Message-Id: <[email protected]>
Date: Wed,  9 Mar 2016 03:42:02 +0100 (CET)

/etc/cron.daily/logrotate:

error: error creating unique temp file: Permission denied

logrotate -vf /etc/logrotate.confを実行すると、エラーや警告なしにログが期待どおりにローテーションされます。 SELinuxが有効になっているため、アクセス許可拒否エラーの原因である可能性がありますが、/var/log/audit/audit.logには過去数週間何のエントリもありません。

Logrotateを手動で実行している場合、日中は正常に動作しているのに、夜間にlogrotateが失敗する原因をトラブルシューティングする方法がわかりません。

追加3月10日:Iainのおかげで、(ana)cronが夜間に行っていることのログ出力を取得できました。/tmp/logrotate.outの最後に次の行があります。

@rotating pattern: /var/log/btmp  monthly (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/btmp
  log does not need rotating
set default create context
error: error creating unique temp file: Permission denied

トラブルシューティングしようとしていたRailsアプリのログ)に関連するエラーではないため、これは私が期待していたものではありませんでした。エラーメッセージ自体に焦点を当てないことで( Googleで韓国語とロシア語でヒットしましたが、実際に発生している問題についてさらに詳しく知りました logrotate cronジョブが特定のログをローテーションしない これは、私が解決しようとしている問題( nginxログはローテーションし、Railsログ)をスキップします。したがって、audit.logに表示されなかったとしても、結局SELinuxに関連している可能性があります。そこに投稿されたソリューション。

2
Rafe

これを試してデバッグするために最初に行うことは、cronが実行するlogrotateスクリプトを変更し、詳細モードでlogrotateを実行させることです。

私のスクリプトの/etc/cron.daily/logrotateにこの行があります

 /usr/sbin/logrotate /etc/logrotate.conf

に変更します

 /usr/sbin/logrotate -v /etc/logrotate.conf >>/tmp/logrotate.out 2>&1
2
user9517

-sオプションをlogrotateに追加して、(書き込み可能な)一時ファイルのパスを指定する必要があります。

2
Marco Marsala