4.1 suEXEC |
suEXEC機構が組み込まれていないhttpdサーバを運用し、一般ユーザにCGIの使用を許可する場合、CGIプログラムのパーミッションは、他のユーザ(ここではapacheサーバの所有者)が実行できるように設定しなければなりません。これは、
これらの欠点に対処するため、apacheにはsuEXEC機能が追加されました。
4.2 インストール |
--enable-suexec --suexec-docroot=DIR --suexec-caller=NAME |
オプションの説明は次の通りです。
--enable-suexec | このオプションを指定するとsuEXECが有効となる |
--suexec-caller=NAME | suEXECを呼び出すユーザ名を指定する |
--suexec-docroot=DIR | suEXECを実行する際のドキュメントルートを指定する |
設定値 | 説明 | デフォルト値 |
NAME | suEXECを呼び出すユーザ名 | apache (Redhat7.x); nodoby (Redhat6.x) |
DIR | ドキュメントルート | /var/www (Redhat7.x); /home (Redhat6.x) |
4.3 設定 |
以下に、一般ユーザが自身の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> |
# 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 |
CGIプログラムのパーミッションが、所有者である"user01"以外、読むことも実行することも出来ないことに注目してください。
次のURLでアクセスすると、このCGIプログラムはユーザ:"user01"の権限で実行されます。
http://localserver/~user01/cgi-bin/test.cgi
このように、suEXEC機能を使うことにより、一般ユーザのCGIプログラムを保護し、安全に実行することが可能となります。
home |index |previous |next |contents