suexec.c patch ------------ Apache 2.0.63 のsuexecにchroot用のパッチを当てました。 CGI実行時、指定ディレクトリー以下のファイルを実行する際にchrootします。 その際、環境変数(DOCUMENT_ROOT,SCRIPT_FILENAME)をそれらしく変更します。 コンパイル・インストール方法: apacheを展開した場所に移動し、 # cd src/support として、その中にsuexec_chroot.patchを置き、 # patch < suexec_chroot.2.patch としてください。 パッチを当てた後、suexec.cの153行目以降を編集してください。 153:char *chroot_dir_list[] = { 154: "/home/cgi/", 155: "/home/cgi2/", 156: NULL 157:}; ここで指定したいずれかのパス以下にあるファイルを実行しようとすると、 そのディレクトリに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が行われます。 諸注意 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にログを吐く可能性があります。 色々考えると、chroot対象ユーザのディレクトリはCHROOT_DIR以下に置いた方が良いと思われます。 転載について このプログラム・テキスト等の転記・転載・再配布等は一切禁止します。 どうしても転載・転記・再配布等行いたい場合 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.2 2009/06/22 環境変数を正しく設定するように変更(PATH_TRANSLATED)。CHROOT_DIRが設定されていない場合にコンパイルできないバグを修正 version 0.1 2007/11/05 CHROOT_DIRからchroot_dir_listに変更。複数ディレクトリに対応。あと、CR+LFだった行を正しくする(笑) version 0.0 2005/06/12 公開。 (c) Copyright 2005-2009 Ituki Kirihara/NI All rights reserved.