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
2 ответа
Проблема в том, как вы вводите команду в 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"?
