Linuxサーバーの一部にNagiosをセットアップしていますが、少し問題が発生しています。check_ide_smart
プラグインを実行するためのシステムへのrootアクセスが必要です。これを実行するには、check_by_ssh
プラグインを使用してリモートホストのnagiosアカウントにSSHで接続し、check_ide_smart
sudoを使用して実行します。
/etc/sudoers
プログラムを機能させるために、最初に次の行を追加しました。
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
これをローカルで実行すると問題なく動作しましたが、Nagiosから実行すると問題が発生しました。TTYが生成されず、プラグインが機能しませんでした。
sudoのmanページを調べたところ、-sオプションが見つかりました。これは、シェルを生成してそこでプログラムを実行します。sudo -s
-sがコマンドを/bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
に変更するため、sudoersファイルでは許可されていないため、を使用しようとしたときに権限の問題に遭遇しました。代わりにそのコマンドを使用するようにsudoersファイルを変更しようとしましたが、機能しませんでした。引用符を使用すると構文エラーになります。
私は最終的に次の行を使用して動作させました/etc/sudoers
:
nagios ALL=/bin/bash
nagiosユーザーが何でもできるrootシェルを生成することを許可しているので、これは私には本当に間違っていると感じています。
この時点では、多分、nagiosユーザーが読み取り専用権限を持っているシェルスクリプトにコマンドを入れることで機能するので、シェルスクリプトを作成しました。
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
残念ながら、渡されたパラメーター( 編集:私$@
)をプラグインで正しく機能させることができなかったため、これが機能するかどうかわかりません。$@
はそれが機能するために引用する必要がありました。@derobertと@pjzに感謝します。@Mike Arthurのソリューションを使用して動作させたので、動作するかどうかはまだわかりません。
sudo -s
ルートシェルのスポーンを許可せずに作業できる方法はありますか?
回答:
に次の行を追加しました/etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
末尾のアスタリスクに注意してください。それがなければ、これは機能しません。答えてくれて@Mike Arthurに感謝します。