我在 Ubuntu 服务器中遇到一个问题,Rsyslog 无法从 Perforce 日志目录读取任何文件。
我测试了 Rsyslog 的 imfile 模块配置是否正常工作,因为它能够从包括 /home 在内的其他目录读取。
我还将 syslog 用户添加到 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)
知道可能出了什么问题吗?
答案1
您的 perforce 组只能读取 repo /perforce/logs,您需要向该文件夹添加“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/containers),但它破坏了新的 pod(它们存在 DNS 解析问题)。我别无选择,只能以 root 身份运行 rsyslog,而不是 syslog