私はかなり簡単な作業を行う必要があります。カスタムログファイルセットを一晩データベースに移行することです。
単純な事前回転操作には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
)。また、これを使用してaudit2allow
SELinuxエラーメッセージと考えられる解決策を確認することもできます。
また、semanage permissive -a logrotate_t
SELinuxで拒否せずにlogrotateを実行できるようにしてください。