Я не могу заставить 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
Затем он должен начать запись в этот новый каталог журналов.