web-dev-qa-db-ja.com

logrotateスクリプトの実行後、auditdプロセスはログ記録を停止します

/etc/audit/auditd.confからの)auditdの特別なローテーションを使用するのではなく、logrotateを使用して監査ログを一定期間保持しようとしています。そのファイルのmax_log_file_actionIGNOREに変更しました。

以下は私のlogrotate構成です:

/var/log/audit/audit.log {
    daily
    dateext
    rotate 180
    postrotate
        /bin/kill -HUP `cat /var/run/auditd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

ログは正常にローテーションされます。ただし、監査デーモンはログ記録を再開しません。 /var/log/audit/audit.logは、auditdサービスを再起動するまで空のままです。 /bin/kill -USR1service auditd reloadも試しましたが、これらのオプションもうまく機能しません。 /bin/kill -USR1は実際には監査デーモンを実行し続けますが、空のaudit.log.1ファイルを作成します。

ログローテーション後も監査デーモンを実行し続けるために、監査デーモンにシグナルを正常に送信する方法はありますか?

ありがとう。

2
Linux2012

コミュニティのバンプのためにこれに答える...

Auditdは、service auditd rotateコマンドによる強制ローテーションをサポートしています。これをcronと組み合わせて、時間に基づいて実行できます。 (毎日、毎時、毎週火曜日の午前10時など)

/usr/share/doc/audit-$version/auditd.cronにあるRPMに例が含まれています。

1
Aaron Copley

あなたのkillコマンドは実際にはプロセスのkillに失敗していると思います。次のことを試してください。

/var/log/audit/audit.log {
    daily
    dateext
    rotate 180
    postrotate
        $(/bin/kill `cat /var/run/auditd.pid 2> /dev/null`)
        service auditd restart
    endscript
}
1
brucegarro