我使用的是完全默认的 Debian Buster 安装。我已经安装了 munin-node,它报告自己的版本为 2.0.49。
我有一个自定义插件/etc/munin/plugins
。它是一个 shell 脚本,只是从用户主目录的文件中获取值:/home/peter/value.txt
。
我可以netcat localhost 4949
与 munin 节点交互。
如果我发出list
命令,那么我的插件会与所有默认值一起包含在内,因此 munin-node 确实会识别该插件存在并且可执行,等等。但是当我尝试通过发出命令来运行插件时fetch
,我会获得许可 -当插件尝试打开用户主目录中的文件时出现拒绝错误。重申;插件本身执行,但无法读取主目录中的文件。
一些事实:
它适用于 Debian 9 (Jessie),其中 munin-node 报告自己的版本为 2.0.33-1。
如果我破解插件来打印硬编码值,它就可以工作。
用户主目录中的文件具有权限-rw-r--r--
。主目录本身有权限drwxr-xr-x
。
如果我munin-run
以 root 身份从命令行安装该插件,则它可以正常工作。
如果我搬到value.txt
或/etc/munin/plugins
那么usr/share/munin/plugins
它就会起作用。
Google 建议,如果某个插件可以与 SELinux 配合使用munin-run
,但不能与 SELinux 配合使用munin-node
,那么问题可能出在 SELinux 上。我没有运行 SELinux,AFAIK。
如果我以 root 身份在命令行上手动service munin-node stop
运行,则它可以正常工作。munin-node
htop
显示该插件以 root 身份运行。我可以添加一个条目/etc/munin/plugin.conf.d
并让它以主目录所在的用户身份运行,但这没有效果。(我的意思是;我可以看到该插件现在正在以该用户身份运行,但它仍然收到权限被拒绝的错误)。
我相信 Debian 脚本启动服务的方式有一些问题/etc/init.d/munin-node
导致了这种情况。可能是AppArmor?