suexec.c patch ------------ Apache 2.2.21 のsuexecにchroot用のパッチを当てました。 CGI実行時、指定ディレクトリー以下のファイルを実行する際にchrootします。 その際、環境変数(DOCUMENT_ROOT,SCRIPT_FILENAME,PATH_TRANSLATED)をそれらしく変更します。 あと、CGIENV_で始まる環境変数を素通しにします。 コンパイル・インストール方法: apacheを展開した場所に移動し、 # cd src/support として、その中にsuexec_chroot.2.2.patchを置き、 # patch < suexec_chroot.2.2.patch としてください。 パッチを当てた後、suexec.cの180行目以降を編集してください。 180:char *chroot_dir_list[] = { 181: "/home/cgi/", 182: "/home/cgi2/", 183: NULL 184:}; ここで指定したいずれかのパス以下にあるファイルを実行しようとすると、 そのディレクトリにchrootがかかります。 パスの数は増減可能ですが、最後は必ずNULLにしてください。 あと、パスの最後が/でない場合、色々と問題が発生するのでやめてください。 例: /homeにのみchrootする場合は、こんな感じに書き換えます。 おそらくよくあるパターンです。 char *chroot_dir_list[] = { "/home/", NULL }; /home以下にライブラリやスクリプトで使う言語等をコピーするのを忘れずに。 もし、/home/realFriend, /home/virtualFriend, /home/otherにある時に、chrootする場合は、 こんな感じに書き換えます。 char *chroot_dir_list[] = { "/home/realFriend/", "/home/virtualFriend/", "/home/other/", NULL }; 例を見れば分かるかと思いますが、リストはいくらでも追加・削除できます。 (もちろんNULLのみのリストも作成出来ますが、意味がないでしょう) 注意点としては、「コンパイル時」にのみ設定可能という点でしょうか? 59行目の#define CHROOT_DIRを削除すると、chrootがかからなくなります。 使い方としては、AP_DOC_ROOT以下のディレクトリをchroot_dir_listに入れる事をお勧めします。 (ちなみに、ユーザディレクトリを指定した場合のバグチェックは行っていません。  多分動くと思いますけど) 例:AP_DOC_ROOTを"/home/"に、chroot_dir_listを"/home/www/","/home/www2/"に設定。   /home/ituki/htdocs/example.cgiはchrootされません   /home/www/ituki2/htdocs/example.cgiはchroot /home/wwwが行われます。   /home/www2/ituki3/htdocs/example.cgiはchroot /home/www2が行われます。 FreeBSDのportsに入れる場合は? /usr/ports/www/apache22で作業します。 まず設定まで終わらせます。suexecを有効にするのを忘れずに。 # make patch パッチを当てるため移動します (httpd-2.2.11という名前はバージョンによっては微妙に変化するかもしれません) # cd work/httpd-2.2.11/support パッチをダウンロードします # fetch http://fc.to/ituki/software/patch/suexec_chroot.2.2.patch パッチを当てます # patch < suexec_chroot.2.2.patch suexec.cのchroot_dir_listを書き換えます (省略。エディタで好きなようにどうぞ) 元のディレクトリに戻ります # cd ../../.. 続きの作業をします # make install これでパッチを当てたバージョンが入るはずです。 諸注意 chroot後、suexecがログを吐いた場合、本来のログと異なるファイルに書き出される可能性があります。 例:suexecのログ=/var/log/suexec.log、chroot_dir_listが"/home/www/","/home/www2/"の場合、   /var/log/suexec.logおよび/home/www/var/log/suexec.log、及び   /home/www2/var/log/suexec.logにログを吐く可能性があります。 転載について このプログラム・テキスト等の転記・転載・再配布等は一切禁止します。 どうしても転載・転記・再配布等行いたい場合 ituki@fc.to までメールでご相談下さい。 著作権について Ituki Kirihara/NIはこのプログラムを使った事によって生じた一切の責任を負いません。 各自の責任で使用して下さい。 使用に関して、特に金銭的請求をすることはありません。 これらのプログラムの著作権は、Ituki Kirihara/NIが保有しています。 このプログラムを使用されている方は、ituki@fc.toにメールでお知らせして頂けると嬉しいです。 サポート メール ituki@fc.to にて受け付けております。バグ・意見等ありましたらどうぞ。 ただ、時間がないため、対応できるかはあやしいです(^_^; 以下の場所で関連情報等を公開しています http://fc.to/ituki/ http://blog.proj.jp/ituki/ このホームページは Ituki Kiriharaの趣味のページです(^_^; バージョン履歴 version 0.1 2011/12/16 バグfix。リダイレクト時にエラーになる症状に対応 version 0.0 2009/04/24 公開 (c) Copyright 2011 Ituki Kirihara/NI All rights reserved.