it-swarm-es.com

Limitando el uso de `Sudo -s`

Estoy configurando Nagios en algunos de mis servidores de Linux y he encontrado un problema. El check_ide_smart El plugin requiere acceso de la raíz al sistema para ejecutar. Para ejecutarlo, uso el check_by_ssh Plugin a SSH a la cuenta Nagios en el host remoto, luego ejecute check_ide_smart usando sudo.

Inicialmente agregué las siguientes líneas a /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 obteniendo un problema cuando se ejecutó de Nagios: no se estaba engendrando TTY, lo que impidió que el plugin funcione.

Exgente en la página del hombre para su sudo y encontré la opción -s, lo que generó una cáscara y ejecuta el programa allí. Cuando intenté usar Sudo -s, Me encontré con problemas de permiso, ya que los campos aparentemente cambian el comando en /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart, que no está permitido por el archivo de sudoers. Intenté cambiar el archivo de sudoers para usar ese comando en su lugar, pero eso no funcionó, y usar cotizaciones es un error de sintaxis.

Finalmente, 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 de Nagios genere una cáscara de la raíz, con la que pueden hacer cualquier cosa.

En este punto, aunque tal vez, tal vez, al poner el comando en un script de shell de que el usuario de Nagios tiene privilegios de solo lectura funcionaría, así que creé un script Shell:

#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin [email protected]

Desafortunadamente, nunca pude obtener los parámetros pasados ​​([email protected]) para trabajar correctamente con el complemento, así que no sé si esto funcionaría. Editar: Necesitaba citar el [email protected] para que funcione. Gracias @derobert y @pjz. Todavía no sé si funcionaría ya que lo puse a trabajar usando la solución de @mike Arthur.

¿Hay una manera que pueda conseguir Sudo -s ¡Para trabajar mientras no permite el desove de una cáscara de raíces?

Respuesta:

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 posterior; Sin él, esto no funciona. Gracias @mike arthur por la respuesta.

8
Chris Lieb

nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *

Esto debería funcionar y permitir argumentos.

7
Mike McQuaid

FYI, debe presupuestar $ @ en su script Shell para que funcione bien:

#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin "[email protected]"

[email protected] es mágico. De la gestión de bash,

@ se expande a los parámetros posicionales, comenzando de uno. Cuando la expansión ocurre dentro de comillas dobles, cada parámetro se expande a una palabra separada. Es decir, "$ @" es equivalente a "$ 1" "$ 2" ... Si la expansión de doble cotización ocurre dentro de una palabra, la expansión del primer parámetro se une con la parte inicial de la palabra original y la expansión del último parámetro se une con la última parte de la palabra original. Cuando no hay parámetros de posición, "$ @" y $ @ se expanden a la nada (es decir, se eliminan).

Además, iniciar Bash no engendrá un PTY; Aunque estoy perplejo en cuanto a por qué su complemento Nagios necesita un terminal para ejecutar. No debería. Tal vez el problema real es la desinfección del medio ambiente de sudo?

2
derobert