Я столкнулся с проблемой на сервере Ubuntu, где Rsyslog не может читать какие-либо файлы из каталога журналов Perforce.
Я проверил, что конфигурация Rsyslog для модуля imfile работает правильно, так как он может читать из других каталогов, включая / home.
Я также добавил пользователя системного журнала в группу perforce и наоборот, но это все равно не сработало.
Я нашел один обходной путь, который явно не подходит для производства, - это сделать что-то вроде:
tail -f /perforce/logs/log.csv >> /home/monitoredlogfile
некоторая полезная информация:
drwxr----- 2 perforce perforce 4096 Jun 11 14:01 logs
id syslog
uid=104(syslog) gid=108(syslog) groups=108(syslog),4(adm),1010(perforce)
id perforce
uid=1010(perforce) gid=1010(perforce) groups=1010(perforce),108(syslog)
Есть идеи, что может пойти не так?
Ваша группа perforce может только читать репо / perforce / журналы, вам нужно добавить «x» в эту папку, чтобы позволить этой группе получить доступ к этой папке.
Также убедитесь, что ваша папка / perforce имеет такое же разрешение. Даже если ваш / perforce / logs имеет в качестве разрешения rwxrwxrwx, если ваш / perforce - только rwx ------, тогда группа никогда не сможет получить к нему доступ.
Если вы не хотите играть с разрешением приложения, вы можете использовать ACL вместо этого, чтобы предоставить доступ пользователю syslog к вашей папке
$ sudo setfacl -m u:syslog:rx -R /perforce/logs/
$ sudo getfacl /perforce/logs/
Осторожно: однажды я попробовал это с Kubernetes (предоставляя доступ к syslog для / var / lib / docker / container), но он сломал новые поды (у них была проблема с разрешением DNS). У меня не было другого выбора, кроме как запустить rsyslog от имени root вместо syslog