Debian 10 上的 Munin-node 插件无法从主目录读取。Debian 9 运行良好

pet*_*rpi 6 debian munin

我使用的是完全默认的 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?

pet*_*rpi 10

答案是 Debian 10 中的 munin-node 软件包包含/lib/systemd/system/munin-node.service,它设置了ProtectHome=true. Debian 9 的 munin-node 软件包没有这个文件。

设置ProtectHome=read-only是一种解决方案,甚至ProtectHome=false包括写访问权限。然而,该ProtectHome标志的存在是有充分理由的。安排插件从其他地方(外部/home)读取其数据可以说是更好的解决方案。

有关该问题的讨论以及安全性与便利性的权衡,请参阅此处。