How to build Internet Server with Linux

last update: 29 Sep 2004

home |index |previous |next |contents

SuEXEC



4.1 suEXEC
suEXECとは、httpdサーバのCGIプログラムを実行する際、httpdサーバのユーザ権限でなく、CGIプログラム所有者の権限で実行するための機構です。

suEXEC機構が組み込まれていないhttpdサーバを運用し、一般ユーザにCGIの使用を許可する場合、CGIプログラムのパーミッションは、他のユーザ(ここではapacheサーバの所有者)が実行できるように設定しなければなりません。これは、

などの欠点があります。

これらの欠点に対処するため、apacheにはsuEXEC機能が追加されました。
4.2 インストール
RedHat7.0以降に付属するhttpdサーバはsuEXEC機能がデフォルトで組み込まれています。suEXEC機能が組み込まれていないhttpdサーバに対し、この機能を組み込むには、ソースコードからの再コンパイルが必要です。
httpdサーバにsuEXEC機能を組み込むには、ソースコードからのコンパイルの"configure"実行時にオプションとして

--enable-suexec
--suexec-docroot=DIR
--suexec-caller=NAME

suEXECを有効にするためのconfigure options


を追加します。

オプションの説明は次の通りです。
--enable-suexec このオプションを指定するとsuEXECが有効となる
--suexec-caller=NAME suEXECを呼び出すユーザ名を指定する
--suexec-docroot=DIR suEXECを実行する際のドキュメントルートを指定する

configure : suEXEC関連のオプション

ここで設定値:"NAME"と"DIR"は、下表に示す値と/etc/httpd/conf/httpd.confファイルの設定を参考にして、選択してください。
設定値 説明 デフォルト値
NAME suEXECを呼び出すユーザ名 apache (Redhat7.x); nodoby (Redhat6.x)
DIR ドキュメントルート /var/www (Redhat7.x); /home (Redhat6.x)
configure実行時の設定値

4.3 設定
suEXEC機能を組み込んだhttpdサーバは、CGIプログラムを実行する際に、 など、20項目の検査を行い、すべての検査が合格だったときのみCGIプログラムを実行します。

以下に、一般ユーザが自身のWEB公開用ディレクトリに、CGIプログラムを置く場合の設定方法を述べます。

まず、一般ユーザが"/home/ユーザのホームディレクトリ/public_html/"を公開可能とするために、"/etc/httpd/conf/httpd.conf"ファイルに以下のディレクティブを追加し、httpdサーバを再起動します。

<Directory "/home/*/public_html">
	AllowOverride FileInfo AuthCOnfig Limit
	Options SymLinksIfOwnerMatch

	Options +ExecCGI
	AddHandler cgi-script .cgi .pl

	Order allow,deny
	Allow from all
</Directory>

httpd.confへの追加


次に、ユーザ:"user01"所有のCGIプログラム"/home/user01/public_html/cgi-bin/test.cgi"を用意します。
# ls -la /home/user01/public_html/cgi-bin/test.cgi
-rwx------ 1 user01 user01 256 1月 12 02:10 /home/user01/public_html/cgi-bin/test.cgi

ユーザ:"user01"のCGIプログラム


CGIプログラムのパーミッションが、所有者である"user01"以外、読むことも実行することも出来ないことに注目してください。

次のURLでアクセスすると、このCGIプログラムはユーザ:"user01"の権限で実行されます。

http://localserver/~user01/cgi-bin/test.cgi

ここで、上記のCGIプログラムのパーミッションを、他のユーザにも書き込み可能、もしくは実行可能に変更すると、suEXEC機能の検査でCGIの実行を拒否されてしまいます。

このように、suEXEC機能を使うことにより、一般ユーザのCGIプログラムを保護し、安全に実行することが可能となります。


home |index |previous |next |contents


since 04/Oct/2004