Назад | Перейти на главную страницу

RSyslog не работает с файлом журнала, расположенным вне / var / log

Я не могу заставить rsyslog записывать в файл журнала, расположенный в каталоге, отличном от / var / log.

Это сервер RHELS 5.6 и по большей части с конфигурацией по умолчанию. Помимо изменений, связанных с rsyslog (правила добавлены в iptables и т. Д.)

Он РАБОТАЕТ, если я укажу следующее в /etc/rsyslog.conf:

local6.* /var/log/MyLog.log

Однако он НЕ РАБОТАЕТ, если я создам файл журнала в расположении /Testing/MyLog.log, chmod -R 777, а затем обновлю конфигурацию до:

local6.* /Testing/MyLog.log

Я сбит с толку, потому что я установил /Testing/MyLog.log (и каталог) с помощью chown и chmod, чтобы иметь идентичные user: group и разрешения, как в журнале /var/log/MyLog.log (в соответствии с выводом ls -la ).

Что я делаю не так? Это вообще возможно? Я даже пробовал создать символическую ссылку в / var / log, ничего, что я пробовал, похоже, не работает. Я поигрался со всевозможными вариантами конфигурации, описанными на сайте rsyslog.

SELinux предотвратит процессы, помеченные syslogd_t для записи в файлы, которые (вероятно) помечены default_t. Вам нужно пометить файл чем-нибудь syslogd_t можно написать на. Файлы в /var/log в основном помечены var_log_t, тип syslogd_t конечно могу написать.

Вам следует не просто переименуйте файлы в /Testing к var_log_t, потому что это обязательно сломается в какой-то момент, когда кто-то выполнит автопереметку при следующей загрузке или запустит restorecon -FvR /.

Вместо этого напишите небольшую политику, которая автоматически и последовательно маркирует ваши файлы в /Testing. Что-то для начала. Ваш файл политики может выглядеть примерно так:

/Testing(/.*)?    --    gen_context(system_u:object_r:var_log_t)

Однако написание политики SELinux - это немного сложно. Вот почему вы должны поместить материал в местоположение по умолчанию для этого материала.

Однако я лично считаю, что ведение журнала действительно должно /var/log. На это есть причина. Независимо от того, насколько вы считаете, что причина для письма /Testing, наверное, лучше написать что-нибудь вроде /var/log/testing.

Изменить: нет, нет, нет, нет, нет. Так не пойдет. Это было глупо. Вы не хотите писать политику, разрешающую syslogd_t написать в var_log_t, потому что это уже разрешено политикой по умолчанию. Вам нужно написать правила контекста файла (файл .fc), как в моем новом фрагменте выше, чтобы пометить /Testing так как var_log_t если вы должны...

После этого selinux не позволяет вам писать журналы за пределами / var / log. Ты можешь тест это выключив его временный

setenforce 0

Затем он должен начать запись в этот новый каталог журналов.