我试图从 httpd 监控日志但出现此错误:
[root@localhost httpd]# tail -f /var/log/zabbix/zabbix_agentd.log
2446:20210304:102535.671 agent #0 started [main process]
2451:20210304:102535.683 agent #5 started [active checks #1]
2447:20210304:102535.688 agent #1 started [collector]
2448:20210304:102535.688 agent #2 started [listener #1]
2449:20210304:102535.692 agent #3 started [listener #2]
2450:20210304:102535.693 agent #4 started [listener #3]
2451:20210304:102837.516 active check "log[/var/log/httpd/error_log]" is not supported: Cannot obtain information for file "/var/log/httpd/error_log": [13] Permission denied
我如何获得许可
答案1
错误消息表明 zabbix 用户无法读取提到的文件“/var/log/httpd/error_log”。
请注意,仅使所有人都可读该文件是没有帮助的 - 您需要为用户“zabbix”提供一种遍历文件所在目录结构的方法 - 即目录的权限需要像这样调整:
chmod o+rx /var
chmod o+rx /var/log
chmod o+rx /var/log/httpd
这为“其他人”提供了读取+执行文件所在的目录结构的机会。
为了测试您是否具有读取文件的正确权限,您可以执行以下操作:
~# whoami
root
~# sudo -u zabbix /bin/bash
/root$ whoami
zabbix
/root$ cat /var/log/nginx/some-error.log
cat: /var/log/nginx/some-error.log: Permission denied
上面的例子表明权限不正确。
答案2
如果文件系统支持,您可以使用 ACL ,而不是使用chmod o+rx
授予过宽权限的 ACL。例如,解决以下错误:
active check "vfs.fs.size[/home/git-data/repositories/+gitaly/PackObjectsCache,pused]" is not supported: Cannot obtain filesystem information: [13] Permission denied
在类似 Debian 的操作系统上你可以:
apt install acl
setfacl -m u:zabbix:x /home/git-data
setfacl -m u:zabbix:x /home/git-data/repositories
setfacl -m u:zabbix:x /home/git-data/repositories/+gitaly
要检查问题,请切换到用户zabbix
并测试访问权限:
sudo -u zabbix /bin/bash
df /home/git-data/repositories/+gitaly/PackObjectsCache