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"?