Estoy configurando Nagios en algunos de mis servidores Linux y me he encontrado con un pequeño problema. El check_ide_smart
complemento requiere acceso de root al sistema para ejecutarse. Para ejecutarlo, utilizo el check_by_ssh
complemento para ingresar a la cuenta nagios en el host remoto, luego ejecuto check_ide_smart
usando sudo.
Inicialmente agregué las siguientes líneas /etc/sudoers
para permitir que el programa funcione:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Si bien esto funcionó bien cuando se ejecuta localmente, estaba teniendo un problema cuando se ejecutaba desde Nagios: no se generaba TTY, lo que impedía que el complemento funcionara.
Busqué sudo en la página de manual y encontré la opción -s, que genera un shell y ejecuta el programa allí. Cuando intenté usar sudo -s
, me encontré con problemas de permisos ya que aparentemente -s cambia el comando a /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, que no está permitido por el archivo sudoers. Intenté cambiar el archivo sudoers para usar ese comando en su lugar, pero eso no funcionó, y el uso de comillas es un error de sintaxis.
Eventualmente lo puse a trabajar usando la siguiente línea en /etc/sudoers
:
nagios ALL=/bin/bash
Esto se siente realmente mal para mí, ya que estoy permitiendo que el usuario nagios genere un shell raíz, con el que puede hacer cualquier cosa.
En este punto, pensé que tal vez, al poner el comando en un script de shell en el que el usuario nagios tiene privilegios de solo lectura funcionaría, entonces creé un script de shell:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
Desafortunadamente, nunca pude hacer que los parámetros pasados ( Editar: necesitaba citar el $@
) funcionen correctamente con el complemento, por lo que no sé si esto funcionaría. $@
para que funcione. Gracias @derobert y @pjz. Todavía no sé si funcionaría desde que lo hice funcionar usando la solución de @Mike Arthur.
¿Hay alguna manera de que pueda ponerme sudo -s
a trabajar sin permitir el engendro de un shell raíz?
Responder:
Se agregó la siguiente línea a /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Tenga en cuenta el asterisco final; sin ella, esto no funciona. Gracias @ Mike Arthur por la respuesta.