Icinga2 - Usuário desconhecido: backuppc

1

Estou tentando monitorar o BackupPC com o Icinga2.Eu baixei este plugin , mas estou recebendo o seguinte erro.

Adicioneiissoacommands.conf

objectCheckCommand"backuppc" {
        import "plugin-check-command"

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

        arguments = {
                "-w" = "$warn_lvl$"
                "-c" = "$crit_lvl$"
                "-v" = "$verbose$"
        }
}

Isso foi adicionado a \etc\sudoers

Defaults:nagios !requiretty
nagios  ALL=(ALL) NOPASSWD: /usr/lib/nagios/plugins/check_backuppc

E isso foi adicionado a 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
}

O usuário do Backuppc existe e o comando está funcionando, quando eu o executo a partir do 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)

Ty

    
por intelis 19.12.2015 / 22:07

2 respostas

4

O problema é como você coloca o comando no Icinga2.

Quando você escreve:

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

Isto dá ao sistema uma lista de argumentos, que coloca

"-u  backuppc"

como um argumento único . Agora o sudo tenta encontrar o usuário "backuppc", com 2 espaços.

Você deve escrever: (2 argumentos)

"-u", "backuppc"

Ou: (argumento único sem espaço)

"-ubackuppc"

Geralmente os espaços são destinados a separar argumentos, mas apenas quando analisados por um shell (como o bash).

Icinga2 tenta executar o comando de forma segura, para que a injeção do código shell não aconteça.

    
por 20.12.2015 / 10:14
1

A outra resposta de @lazyfrosh aponta para o problema perfeitamente. Mas há duas coisas que gostaria de acrescentar.

  • A maneira como você está testando sempre funcionará, pois você está logado como root . Se você quiser testar se o usuário nagios é capaz de executar o script, primeiro faça o login como nagios e, em seguida, execute o comando usando sudo para ver se funciona.

  • Considerando a segurança, você pode atribuir ao usuário nagios o privilégio sudo limitado ao que é necessário para executar o script como usuário backuppc e nada mais. Algo como:

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

Pode ser que você precise ajustá-lo de acordo com o script.

Veja isto para informações semelhantes: Linux: How permitir que um usuário comum "su - anotherUser"?

    
por 20.12.2015 / 00:43