こんにちは、Ubuntu 10.464ビットLTSでrsyslogを使用しています。
以下は、/ etc/rsyslog.d /60-mylogger.confの関連する構成です。
$ template Paul、 "%msg%\ n"
$ outchannel log_rotation_paul、/ var/log/paul/events.log、2000、/ opt/scripts/log_rotation_script.sh
local0。* $ log_rotation_paul; Paul
これは2000バイトごとにローテーションする必要があります
私の問題は、ここのチャネルディレクティブにより、/ etc/rsyslog.confで定義された所有権が完全に無視され、ログローテーションスクリプトが呼び出されたときに、スクリプトの実行時にログファイルを移動するために必要なroot権限がないことです。 rsyslogと移動するファイルには、root権限が必要です。
私がこれを見つけたアイデア リンク しかし残念ながらそれは私の問題を解決しません。
私が正しく理解していれば、/ var/log/paul /events.logはrootが所有しています。それでも、/ var/log/paul /events.logを移動できないrsyslogユーザーとしてスクリプトを実行しています。
Sudo chown -R root.rsyslog /var/log/paul/
Sudo chmod 0775 /var/log/paul
Sudo chmod g+s /var/log/paul
現在、/ var/log/paul内の新しいファイルは常にrsyslogによって所有されています。使用する別のソリューションはACLです。