logrotateがローテーションされたログの所有者を変更しないようにする方法


9

logrotateでローテーションしたい「apache」ユーザーのログファイル所有者がいます。

別のユーザーとしてlogrotateを実行して、copytruncate戦略を使用して「web」と言って、それを実行したいと思います。

これは次のエラーで失敗します:

error: error setting owner of ./logfile.log.1: Operation not permitted

ただし、logrotateが新しいファイルの所有者をローテーションされたファイルの所有者、つまりapacheに変更しようとするからです。しかし、logrotateが所有者として「web」を含むコピーを作成し、それが正常に機能する場合は、同じ所有者を持つ新しいファイルについては気にしません。

では、logrotateがコピーされたファイルの所有者を変更しないようにする方法はありますか?


1
後世のためにこれを残して:使用するpostscriptchown "$1"、それは所有者を設定することができないからlogrotateのを防ぐことはできませんので、おそらくここでは適切ではありません。
David Lord

回答:


7

ファイルでcreateディレクティブを使用し/etc/logrotate.d/ます。例:

create 0664 www-data www-data

1

createおそらく、質問の最後の文で説明したことを実行しますが、このオプションはと互換性がcopytruncateありません。


0

postrotateおよびprerotateオプションで同じ問題を解決しました:

/opt/bars/web_edu/var/log/nginx*.log {
        su web_edu web_edu
        daily
    compress
        missingok
        rotate 30
        dateext
        notifempty
        create 0644 web_edu web_edu
        sharedscripts
        prerotate
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.log
        endscript
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` || true
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.gz
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.log
        endscript
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.