Назад | Перейти на главную страницу

Icinga2 - Неизвестный пользователь: backuppc

Я пытаюсь контролировать BackupPC с помощью Icinga2. Я скачал этот плагин но я получаю следующую ошибку.

Я добавил это в 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 существует, и команда работает, когда я запускаю ее из оболочки:

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)

Ty

Проблема в том, как вы помещаете команду в Icinga2.

Когда вы пишете:

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

Это дает системе список аргументов, который помещает

"-u  backuppc"

как не замужем аргумент. Теперь sudo пытается найти пользователя backuppc с двумя пробелами.

Вы должны либо написать: (2 аргумента)

"-u", "backuppc"

Или: (Один аргумент без пробела)

"-ubackuppc"

Обычно пробелы предназначены для разделения аргументов, но только при синтаксическом анализе оболочкой (например, bash).

Icinga2 пытается выполнить команду безопасным способом, чтобы инъекции кода оболочки не произошло.

Другой ответ от @lazyfrosh отлично указывает на проблему. Но я хотел бы добавить две вещи.

  • То, как вы тестируете, всегда будет работать, если вы вошли в систему как root. Если вы хотите проверить, nagios может запустить скрипт, затем сначала войдите как nagios а затем запустите команду, используя sudo чтобы посмотреть, работает ли это.

  • С точки зрения безопасности вы можете назначить nagios пользователь права sudo ограничены тем, что необходимо только для запуска скрипта от имени пользователя backuppc и больше ничего. Что-то вроде:

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

Возможно, вам нужно будет настроить его по сценарию.

См. Это для аналогичной информации: Linux: Как разрешить обычному пользователю «su - anotherUser»?