[PHP-users 16832]Re: DSO(モドキ)でSuexec

Hideo NAKAMITSU nomo @ bluecoara.net
2003年 7月 19日 (土) 10:03:03 JST


中満です.

PHPの話題から逸れ始めましたので佐藤さんや重松さんと直接
やりとりをしていましたが結論がでましたのでご報告いたします.

最初に述べておくべきでしたが,私のパッチはレンタルサーバのように
不特定多数が利用する環境を想定したものです.(ホストベースのバーチャルホスト)

このような環境ではユーザ間のセキュリティを保ちつつ,それぞれの
汎用性も考慮しなくてはなりません.
(単にCGI版を使用したりsafe_modeを利用するのも場合によっては難しい)

On Fri, 18 Jul 2003 14:46:58 +0900
SATOH Fumiyasu <fumiya @ samba.gr.jp> wrote:

> mod_action の Action ディレクティブを利用すれば、
> Apache を改造しなくても同等のことができると思います。
> 
> AddHandler x-php-script php
> Action x-php-script /cgi-bin/your-custom-script.cgi
> 
> ってな感じだったっけな? 環境変数の何かで実際にアクセスされた
> PHP ファイルがなんだったかを取得できたような。

この方法だと
・スクリプトの実行権が必要ない
・スクリプトのヘッダに#!を記述する必要がない
という用件は満たしていますが,your-custom-script.cgiという
ラッパーのようなスクリプトが必要になります.

ですから,DSO用に作成したPHPアプリケーションをmod_action
環境に簡単に移行させることはできません.

ということで,スクリプトの汎用性を保ちつつファイル所有者の
実行権限で動作させるためには

1. Suexecハック + DSOモドキ                        (実際はCGI版)
2. Apache-2.x + perchild                           (まだかなり不安定)
3. Apache-1.3.x + DBIG_SECURITY_HOLE + mod_become  (root権限必要)
4. IPv6が普及し,IPベースのバーチャルホストが簡単に利用できるようになる.

しか思いつきません.ただ,どれも不完全な方法で,
1の欠点は見た目上はモジュール版ですが実際にはプロセスが起動すること
2の欠点はとにかく現状では不安定なこと,あとバーチャルホストごとに
httpdのプロセスが必要であること(1000個のバーチャルホストがあればhttpdが
少なくとも1000プロセス起動しておく必要がある)
3の欠点はhttpdがHTTPヘッダを受け取るまではroot権限で動作すること
(libsafeやchroot,IPSなどである程度安全性は保たれる)です.

nobody権限でsafe_modeを使用する方法もありますが,利用者の中には
system()など使用している困ったちゃんもいらっしゃるので・・・.

お騒がせいたしました.

/* -----------------------------------
Hideo NAKAMITSU <nomo @ bluecoara.net>
http://solaris.bluecoara.net/
----------------------------------- */



PHP-users メーリングリストの案内