Linux

Search2 - 未知使用者:backuppc

  • December 20, 2015

我正在嘗試使用 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
}

Backuppc 使用者存在並且命令正在執行,當我從 shell 執行它時:

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)

問題在於您將命令放入 Icinga2 的方式。

當你寫:

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

這給了系統一個參數列表,它把

"-u  backuppc"

作為一個單一的論點。現在 sudo 嘗試使用 2 個空格查找使用者“backuppc”。

你應該寫:(2個參數)

"-u", "backuppc"

或:(單參數,無空格)

"-ubackuppc"

通常空格是用來分隔參數的,但僅在由 shell(如 bash)解析時。

Icinga2 嘗試以安全的方式執行命令,因此不應發生 shell 程式碼注入。

引用自:https://serverfault.com/questions/744236