J'installe Nagios sur certains de mes serveurs Linux et j'ai rencontré un peu de problème. Le check_ide_smart
plugin nécessite un accès root au système pour fonctionner. Pour l'exécuter, j'utilise le check_by_ssh
plugin pour ssh dans le compte nagios sur l'hôte distant, puis je lance en check_ide_smart
utilisant sudo.
J'ai initialement ajouté les lignes suivantes /etc/sudoers
pour permettre au programme de fonctionner:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Bien que cela ait très bien fonctionné lorsqu'il était exécuté localement, je rencontrais un problème lorsqu'il était exécuté à partir de Nagios: aucun TTY n'était généré, ce qui empêchait le plugin de fonctionner.
J'ai creusé la page de manuel de sudo et trouvé l'option -s, qui génère un shell et exécute le programme là-dedans. Lorsque j'ai essayé d'utiliser sudo -s
, j'ai rencontré des problèmes d'autorisation car le -s change apparemment la commande en /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, ce qui n'est pas autorisé par le fichier sudoers. J'ai essayé de changer le fichier sudoers pour utiliser cette commande à la place, mais cela n'a pas fonctionné, et l'utilisation de guillemets est une erreur de syntaxe.
Je l'ai finalement fait fonctionner en utilisant la ligne suivante dans /etc/sudoers
:
nagios ALL=/bin/bash
Cela me semble vraiment mal car j'autorise l'utilisateur nagios à générer un shell racine, avec lequel il peut faire n'importe quoi.
À ce stade, je pensais que peut-être, en mettant la commande dans un script shell sur lequel l'utilisateur nagios aurait des privilèges de lecture seule, cela fonctionnerait, alors j'ai créé un script shell:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
Malheureusement, je n'ai jamais pu obtenir les paramètres passés ( Edit: je devais citer le $@
) pour fonctionner correctement avec le plugin, donc je ne sais pas si cela fonctionnerait. $@
pour que cela fonctionne. Merci @derobert et @pjz. Je ne sais toujours pas si cela fonctionnerait depuis que je l'ai fait fonctionner avec la solution de @Mike Arthur.
Existe-t-il un moyen de me mettre sudo -s
au travail sans autoriser le frai d'un shell racine?
Réponse:
Ajout de la ligne suivante à /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Notez l'astérisque de fin; sans cela, cela ne fonctionne pas. Merci @Mike Arthur pour la réponse.