Top >suExecについて

- suExecについて -

suExec環境、CGIWrap環境って何ですか?

  • 通常のUNIX系のWWWサーバの場合、HTTPとして動作するCGIプログラムの所有者権限は nobody で動作します。 これに対して、SuExec環境やCGIWrap環境のWWWサーバの場合には、CGIプログラムはそのファイルの所有者権限 (ユーザ権限) でプログラムが起動し、ファイルの読み書きや実行がそのユーザ権限で実行できるため、セキュリティ的に安全になります。
  • 何故ファイルの所有者権限で動作させたほうが安全かというと、例えば一般サーバでは、掲示板のログファイルはパーミッションを666又は606に設定します。 この3番目の数字が nobody の実行権限を意味しますが、これを「6」、つまり「読み書き可能」にする必要があります(ブラウザ上の操作が nobody であるため)。
    所有者 自分 (owner) グループ (group) その他 (nobody)
    パーミッション 6 0 6

    読む ( r ) = 4
    書く ( w ) = 2
    実行 ( x ) = 1

    (例) 読み書きが可能 = r + w = 4 + 2 = 6

  • しかしながら、このような環境では、例えばログファイルのURLを直接指定することでダウンロードさせることができたり、あるいは同一のサーバ内のID所有者などからもログファイルの読み書きが可能になってしまう危険性が考えられます。 そこで、CGIプログラムの実行を nobody ではなく owner 権限で動作させるようにして、ログファイルのパーミッションを 600 に指定可能にすれば、このような危険性がなくなることになります。

    パーミッション例

    種別 一般サーバ suEXECサーバ
    CGIWrapサーバ
    CGIファイル 755 or 705 701 or 700
    ログファイル 666 or 606 600
    読み出し専用ファイル
    (ライブラリ、HTML等)
    644 or 604 600
    ファイル生成ディレクトリ 777 or 707 701 or 700

Back to Top