外部コマンドファイルのパーミッション


注釈

以下の方法はノーマルユーザアカウント(つまり、公開マシンではない)を持たない監視/管理者boxにNagiosをインストールしているものと想定しています。もし、Nagiosをマルチユーザー/公開マシンにインストールしている場合、外部コマンドファイルにより排他的なパーミッションを与えて、CGIを特定のユーザで実行するようCGIWrapの様なものを使用する事をお勧めします。 私はあなたがそうしたくはないだろうと推測します。Nagiosのセキュリティに関してより詳しい情報はここにあります。

序文

人々が抱えている一般的な問題の1つには外部コマンドファイルの適切なパーミッションの設定だと思います。/usr/local/nagios/var/rwディレクトリ(もしくは メイン設定ファイルcommand_file ディレクティブで指定したポイントのどこであっても)に適切なパーミッションを設定する必要があります。ここではその方法を述べます。Note: 以下の方法はroot権限が必ず必要です・・・

ユーザとグループ

初めにウェブサーバがどのユーザで稼働しているか調べてください。多くのシステムではnobodyです。ただし、これは稼働しているOS/ディストリビューションに依存しています。 同様に、Nagiosもどのユーザーで稼働しているか知っている必要があります。- これはメインコンフィグファイルのnagios_userで設定しています。

次に、ウェブサーバを稼働させているユーザとNagiosを稼働させているユーザが含まれるグループを作成します。このグループを'nagiocmd'グループと称しましょう(望むなら名前は変更できます)。RedHat Linuxなら、以下のコマンドで新しいグループを作成できます(他のシステムならおそらく違うやり方でしょう):

/usr/sbin/groupadd nagiocmd

次に、ウェブサーバユーザ(nobodyもしくはapacheとか)とNagiosユーザ(nagios)を新しく作成したグループに追加します。

/usr/sbin/usermod -G nagiocmd nagios
/usr/sbin/usermod -G nagiocmd nobody

ディレクトリを作成する

次に、コマンドファイルを置くディレクトリを作成します。 デフォルトでは、/usr/local/nagios/var/rwですが、command_fileで異なるディレクトリの指定は可能です。

mkdir /usr/local/nagios/var/rw

ディレクトリのパーミッションの設定

次に、コマンドファイルを置くディレクトリのオーナーを変更します・・・

chown nagios.nagiocmd /usr/local/nagios/var/rw

Nagiosユーザにはこのディレクトリに全権限を与えます・・・

chmod u+rwx /usr/local/nagios/var/rw

作成したグループにはこのディレクトリに全権限を与えます・・・

chmod g+rwx /usr/local/nagios/var/rw

このディレクトリに作成されるファイルにはディレクトリのグループ権限が継承されるようにするため、以下にグループのスティッキービットを立ててください・・・

chmod g+s /usr/local/nagios/var/rw

パーミッションの検証

'ls -al /usr/local/nagios/var'を実行して、rw/サブディレクトリのパーミッションを確認してください。それは以下のような感じになるはずです:

drwxrws---   2 nagios nagiocmd     1024 Aug 11 16:30 rw

nagiosユーザはディレクトリのオーナーで、nagiocmdはディレクトリのグループオーナーであることに注意してください。そのディレクトリに対しnagiosユーザーはrwx権限を持ち、nagiocmdグループはrw権限を持っています。同様に、グループスティッキービットが有効になっていることにも注意してください。これで良いはずです・・・

ウェブサーバの再起動

外部コマンドファイルを含むディレクトリに適切なパーミッションを設定したら、ウェブサーバを再起動させます。これを行わなければたとえnagiocmdグループにapacheのユーザを追加していても外部コマンドファイルへapacheが書き込みできないでしょう。

追加情報...

もし、configureスクリプト実行時に--with-command-grp=somegroupオプションを使用すると、'make install-commandmode'を実行したときに自動的に適切なパーミッションがそのディレクトリに設定することができます。