質問: `sudo-s`の使用を制限する 一部のlinuxサーバーでnagiosをセットアップしていますが、少し問題が発生しました。 check_ide_smartプラグインを実行するには、システムへのルートアクセスが必要です。それを実行するには、check_by_sshプラグインを使用してリモートホストのnagiosアカウントにssh接続し、sudoを使用してcheck_ide_smartを実行します。プログラムが機能するように、最初に/etc/sudoersに次の行を追加しました。nagios all=nopasswd: /usr/lib/nagios/plugins/check_ide_smart これはローカルで実行すると問題なく機能しましたが、nagiosから実行すると問題が発生しました。ttyが生成されなかったため、プラグインが機能しませんでした。sudoのマニュアルページを掘り下げて、-sオプションを見つけました。これは、シェルを生成し、そこでプログラムを実行します。 sudo -sを使用しようとすると、-sによってコマンドが/bin/bash -c /usr/lib/nagios/plugins/check_ide_smartに変更されたため、アクセス許可の問題が発生しました。これは、sudoersファイルでは許可されていません。代わりにそのコマンドを使用するようにsudoersファイルを変更しようとしましたが、それは機能せず、引用符を使用すると構文エラーになります。最終的には、/etc/sudoersの次の行を使用して機能するようになりました。nagios all=/bin/bash nagiosユーザーが何でもできるルートシェルをスポーンできるようにしているので、これは私には本当に間違っていると感じます。この時点で、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 * 末尾のアスタリスクに注意してください。それがないと、これは機能しません。答えてくれた@mikearthurに感謝します。
回答: sudo -sを使用してルートシェルを起動する代わりに、nagiosユーザーが!requirettyを使用してttyなしでsudoを使用できるようにします。 /etc/sudoersには次のものが必要です。# allow nagios extra privs defaults:nagios !requiretty nagios all=nopasswd: /usr/lib/nagios/plugins/check_ide_plugin ...これにより、パスワードやttyを使用せずにsudoに直接アクセスできるようになります。 sudoがすべてのプラグインにアクセスできるようにする場合は、「check_ide_plugin」をオフのままにしておくことができます。また、check_by_sshよりも少し安全に見えるnrpeを使用しますが、もう少しセットアップが必要です。/etc/sudoers thoでも同じ考えですが、nagiosをnrpeと交換するだけです。 :)〜トミー