Linux
Search2 - 未知使用者: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 }
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 程式碼注入。