Ich richte Nagios auf einigen meiner Linux-Server ein und bin auf ein Problem gestoßen. Das check_ide_smart
Plugin benötigt Root-Zugriff auf das System, um ausgeführt zu werden. Um es auszuführen, verwende ich das check_by_ssh
Plugin, um in das Nagios-Konto auf dem Remote-Host zu ssh und dann check_ide_smart
mit sudo auszuführen .
Ich habe zunächst die folgenden Zeilen hinzugefügt /etc/sudoers
, damit das Programm funktioniert:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Während dies bei lokaler Ausführung einwandfrei funktionierte, trat beim Ausführen von Nagios ein Problem auf: Es wurde kein TTY erzeugt, wodurch das Plugin nicht mehr funktionierte.
Ich habe in der Manpage nach sudo gesucht und die Option -s gefunden, die eine Shell erzeugt und das Programm dort ausführt. Als ich versuchte, es zu verwenden sudo -s
, stieß ich auf Berechtigungsprobleme, da das -s anscheinend den Befehl in ändert /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, was in der sudoers-Datei nicht zulässig ist. Ich habe versucht, die sudoers-Datei so zu ändern, dass stattdessen dieser Befehl verwendet wird, aber das hat nicht funktioniert, und die Verwendung von Anführungszeichen ist ein Syntaxfehler.
Ich habe es schließlich zum Laufen gebracht, indem ich die folgende Zeile in verwendet habe /etc/sudoers
:
nagios ALL=/bin/bash
Das fühlt sich für mich wirklich falsch an, da ich dem Nagios-Benutzer erlaube, eine Root-Shell zu erzeugen, mit der er alles machen kann.
An diesem Punkt dachte ich, dass es vielleicht funktionieren würde, wenn ich den Befehl in ein Shell-Skript setze, für das der Nagios-Benutzer schreibgeschützte Berechtigungen hat. Deshalb habe ich ein Shell-Skript erstellt:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
Leider konnte ich die übergebenen Parameter ( Bearbeiten: Ich musste das zitieren, $@
) nie richtig mit dem Plugin arbeiten lassen, daher weiß ich nicht, ob dies funktionieren würde. $@
damit es funktioniert. Danke @derobert und @pjz. Ich weiß immer noch nicht, ob es funktionieren würde, da ich es mit der Lösung von @Mike Arthur zum Laufen gebracht habe.
Gibt es eine Möglichkeit, sudo -s
an die Arbeit zu gehen, ohne das Laichen einer Wurzelschale zuzulassen?
Antworten:
Folgende Zeile wurde hinzugefügt zu /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Beachten Sie das nachfolgende Sternchen. ohne das geht das nicht. Danke @Mike Arthur für die Antwort.