この章は問題の解決と言うより仕組みの解説だ。 仕組みなんてどうでもいいと思うのであれば、 パーミッションに進め。
また、Linux(またはパクられ元のUNIX)における ファイルのアクセス制限の知識が必要だ。
XREAではsuEXECと言う機能を採用している。 僕の口から言っても正しいかどうかはわからないので、 詳しくはApacheのマニュアルを参考にしろ。
簡単に言うと、CGI及びSSIの実行を そのCGI(SSI)のファイルのオーナーがしているように見せかけるというものだ。 もっとわかりやすく言うと、SUIDビットが立っているかのように振る舞う。
面倒なのでCGIの実行時のみ説明する。 SSIも同様と思われる。
ファイルのオーナーやグループとは異なる第三者である。
CGIの実行者がCGIのオーナーと同じになる。
ISPでは一つのサーバに複数の異なる人物がサイトを持つことになる。 これはxreaでも例外ではない。 その場合、CGIの実行ファイルやデータファイル等は、 そのファイルのオーナー以外から読み込みや書き込みされることは好ましくない。 もし、サーバ内に一人の悪意あるユーザーがいるとすれば、 隠したいログデータを見られたり破壊されたりする恐れが生じる。
Linuxではファイルのアクセス制限によって、 そのような悪意あるユーザーが 他のユーザーのファイルに対して破壊活動が行えないように出来る。 しかし、suEXECを使用しない場合は、 データファイル等は誰もが読み書きできるような状態にしなければならなくなる。 自分のディレクトリに 666や777と言ったファイルが存在するのは何としても避けたいのだが。
そこでsuEXECの登場である。 CGI関連のファイルは700または600のままで実行が可能となる。 これによって、同じサーバ内の悪意あるユーザーからの攻撃を回避できる。 出来れば全てのISPに求めるべき機能であるが、suEXECの複雑さからか、 採用しているISPは少ない。 *1
その他の利点としては、隠したいデータファイルを完全に隠匿することが出来る事だ。 今までは隠したいデータファイルをCGIとして必ず実行するような形式で、 ネット上から隠していたが、これは賢い方法とは言えない。 だが、suEXECではデータファイルを600にすることが出来る。。 600のファイルはファイルのオーナーとroot以外は決してみることは出来ない。
欠点はほとんど無い。 あるとすれば、CGI配布サイトの解説が全くもって役に立たないことだろう。 xreaは初心者向けではないのだから、そこら辺は我慢して貰うしかない。 *2