[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 メーリングリストの案内