まず、この問題を調べるために時間を割いていただき、ありがとうございます。本当に感謝しています。
添付の rsyslog.conf 構成をしばらく実行していましたが、今日、ディスクがいっぱいになったため rsyslog を再起動する必要がありました。その結果、rsyslog は以前のすべての権限 (現在はテストの安全性のため root|root rw) で新しい場所 (.conf ファイルで更新) にログを記録するようになりました。
私が直面している問題は、何を試しても rsyslog がファイルを出力しないことです。tcpdump を実行しましたが、まだデータを受信しています。一致基準 (ホスト IP アドレス) は変更されていないはずであり、構成も変更されていません。
どのような助けでも、特に実行できるデバッグ コマンドがあれば、大変助かります。アンインストールして syslog-ng を使用するよりも、新しいもの (rsyslog など) を学習したいです... 設定は次のとおりです。
### Modules
$ModLoad imtcp
$ModLoad imudp
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
### Set log file permissions
$FileOwner root
$FileGroup root
$FileCreateMode 0777
$DirCreateMode 0777
$Umask 0022
$PrivDropToUser root
$PrivDropToGroup root
### Listeners
# bind ruleset to tcp listener
$InputTCPServerBindRuleset remote
# and activate it:
$InputTCPServerRun 514
$InputUDPServerBindRuleset remote
$UDPServerRun 514
### Templates
#Format the message correctly
$template MsgFormat,"%msg%\n"
# log every host in its own directory
##$template TESTLOG,"/opt/rsyslog/var/log/test.log"
### Rulesets
# Local Logging
# N/A None required at this point in time
#
# Remote Logging
$RuleSet remote
#---MY MATCHING RULE---#
if ($fromhost-ip == "192.168.1.1") then ?TESTLOG
よろしくお願いします:)
答え1
ログ ファイルにカスタマイズされたパスを使用しているため、selinux がブロックしています。 を発行setenforce 0
して rsyslog を再起動してみてください。これで問題が解決した場合、問題は selinux にあったことが確認されます。
selinuxを使い続けながらこれを永久的に修正するには、以下を発行する必要があります。
semanage fcontext -a -t var_log_t '/opt/rsyslog(/.*)?'; restorecon -RF /opt/rsyslog
その後、rsyslog を再起動します。