SELinux + logrotate + prerotate = 権限が拒否されました

SELinux + logrotate + prerotate = 権限が拒否されました

私はかなり簡単な作業を行う必要があります。カスタムログファイルセットを一晩データベースに移行することです。

単純な事前回転操作にはlogrotate(cron.daily)を使用します。

/var/log/myapplog/*.log
{
    daily
    copytruncate
    rotate 366
    dateext
    dateformat .%Y-%m-%d
    compress
    missingok
    compresscmd /usr/bin/xz
    compressoptions -ze9
    compressext .xz
    prerotate
        /usr/local/myapp/bin/DBWriter $1
    endscript
}

残念ながらSELinuxはそうは思わない。これでsetenforce 0スクリプトが完全に実行されます。ログを回転してデータベースに送信するなどの操作を実行します setenforce 1が、次のように返します。

logrotate_script: line 1: /usr/local/myapp/bin/DBWriter: Permission denied

最近設定したDBWriterのコンテキストを変更してみましたが、unconfined_u:unconfined_r:unconfined_t動作しません。

理想的には、SELinuxを有効にしておく必要があります。重要な場合、DBWriter は java .jar ファイルとしても使用できます。しかし、走るjava -jar DBWriter.jar結果は同じです。

よろしくお願いします!


編集:Win.Tの下の答えで私の問題を修正しました。

semanage permissive -a logrotate_t

問題の一部は私がやろうとしていることです正確にSELinuxは、以下を防止するように設計されています。プロセスAは不明なファイルBを実行し、システムCに混乱を招きます。

プロジェクト設計の考慮事項と制約により、私たちはこの道を選びました。

顧客は、常にセキュリティや将来の保証などのカラフルな流行語を聞きたくはありません。

ベストアンサー1

ビュー/var/log/messages/var/log/audit/audit.log(実行中の場合auditd)。また、これを使用してaudit2allowSELinuxエラーメッセージと考えられる解決策を確認することもできます。

また、semanage permissive -a logrotate_tSELinuxで拒否せずにlogrotateを実行できるようにしてください。

おすすめ記事