Icinga2 - 未知用户:backuppc

Icinga2 - 未知用户:backuppc

我正在尝试使用 Icinga2 监控 BackupPC。我已经下载这个插件但我收到了以下错误。

在此处输入图片描述

我已经将其添加到commands.conf

object CheckCommand "backuppc" {
        import "plugin-check-command"

        command = [ "sudo", "-u  backuppc",  PluginContribDir + "/check_backuppc" ]

        arguments = {
                "-w" = "$warn_lvl$"
                "-c" = "$crit_lvl$"
                "-v" = "$verbose$"
        }
}

这被添加到\etc\sudoers

Defaults:nagios !requiretty
nagios  ALL=(ALL) NOPASSWD: /usr/lib/nagios/plugins/check_backuppc

这被添加到services.conf

apply Service "backuppc" {
   import "generic-service"

   check_command = "backuppc"
   vars.warn_lvl = 14
   vars.crit_lvl = 30
   vars.verbose = ""

   assign where host.name == NodeName
}

当我从 shell 运行该命令时,Backuppc 用户存在并且该命令正在运行:

root@backup:/# sudo -u backuppc ./usr/lib/nagios/plugins/check_backuppc
Use of qw(...) as parentheses is deprecated at /usr/share/backuppc/lib/BackupPC/Storage/Text.pm line 302.
Use of qw(...) as parentheses is deprecated at /usr/share/backuppc/lib/BackupPC/Lib.pm line 1425.
BACKUPPC CRITICAL ( 1 OK, 0 UNKNOWN, 0 WARNING, 1 CRITICAL)

答案1

问题在于您将命令输入 Icinga2 的方式。

当你写:

command = [ "sudo", "-u  backuppc",  PluginContribDir + "/check_backuppc" ]

这为系统提供了一个参数列表,其中包含

"-u  backuppc"

作为一个单身的参数。现在 sudo 尝试查找用户“backuppc”,其中有 2 个空格。

你应该写:(2个参数)

"-u", "backuppc"

或者:(单个参数,无空格)

"-ubackuppc"

通常空格用于分隔参数,但仅在由 shell(如 bash)解析时才如此。

Icinga2 尝试以安全的方式运行命令,这样就不会发生 shell 代码注入。

答案2

@lazyfrosh 的另一个回答完美地指出了这个问题。但我想补充两点。

  • 由于您以 身份登录,因此您的测试方式始终有效root。如果您想测试用户是否nagios能够运行脚本,请先以 身份登录nagios,然后使用 运行命令sudo以查看其是否有效。

  • 考虑到安全性,你可以为nagios用户分配 sudo 权限,仅限于以用户身份运行脚本所需的权限backuppc,仅此而已。例如:

    nagios ALL=(backuppc) NOPASSWD: /usr/lib/nagios/plugins/check_backuppc

可能需要根据脚本进行调整。

请参阅此内容以获取类似信息:Linux:如何允许普通用户“su - anotherUser”?

相关内容