Прежде всего, спасибо, что уделили время изучению этого вопроса, я это очень ценю.
У меня уже некоторое время работала прикрепленная конфигурация rsyslog.conf, пока сегодня мне не пришлось перезапустить rsyslog, так как диск заполнялся. В результате rsyslog теперь регистрируется в новом месте (обновленном в файле .conf) со всеми предыдущими разрешениями (в настоящее время root|root rw для безопасного тестирования).
Проблема, с которой я столкнулся, заключается в том, что, что бы я ни пытался, rsyslog не выводит файл. Я запустил tcpdump, но все еще получаю данные. Критерии соответствия (IP-адрес хоста) не должны были измениться, и конфигурация также не изменилась.
Любая помощь, особенно отладочные команды, которые я могу запустить, будут очень признательны. Я бы лучше узнал что-то новое (вроде rsyslog), чем удалял его и просто использовал syslog-ng... Вот конфигурация:
### 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.