Sto installando Nagios su alcuni dei miei server Linux e ho riscontrato un problema. Il check_ide_smart
plug-in richiede l'accesso root al sistema per funzionare. Per eseguirlo, uso il check_by_ssh
plug-in per ssh nell'account nagios sull'host remoto, quindi check_ide_smart
eseguo usando sudo.
Inizialmente ho aggiunto le seguenti righe /etc/sudoers
per consentire al programma di funzionare:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Mentre questo funzionava bene quando eseguito localmente, stavo ricevendo un problema quando veniva eseguito da Nagios: non veniva generato alcun TTY, che impediva il funzionamento del plugin.
Ho scavato nella pagina man per sudo e ho trovato l'opzione -s, che genera una shell ed esegue il programma lì dentro. Quando ho provato a utilizzare sudo -s
, ho riscontrato problemi di autorizzazione poiché apparentemente -s cambia il comando in /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, il che non è consentito dal file sudoers. Ho provato a cambiare il file sudoers per utilizzare quel comando, ma non ha funzionato e l'uso delle virgolette è un errore di sintassi.
Alla fine sono riuscito a farlo usando la seguente riga in /etc/sudoers
:
nagios ALL=/bin/bash
Questo mi sembra davvero sbagliato dal momento che sto permettendo all'utente nagios di generare una shell di root, con la quale possono fare qualsiasi cosa.
A questo punto, ho pensato che forse, inserendo il comando in uno script di shell su cui l'utente nagios ha i privilegi di sola lettura funzionerebbe, quindi ho creato uno script di shell:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
Sfortunatamente, non sono mai riuscito a far Modifica: avevo bisogno di citare il $@
funzionare correttamente i parametri passati ( ) con il plugin, quindi non so se funzionerebbe. $@
per farlo funzionare. Grazie @derobert e @pjz. Ancora non so se funzionerebbe da quando l'ho fatto funzionare usando la soluzione di @Mike Arthur.
C'è un modo in cui posso mettermi sudo -s
al lavoro senza consentire la generazione di una shell root?
Risposta:
Aggiunta la seguente riga a /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Nota l'asterisco finale; senza di essa, questo non funziona. Grazie @Mike Arthur per la risposta.