1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>suEXEC サポート - Apache HTTP サーバ</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p>
15 <p class="apache">Apache HTTP サーバ バージョン 2.0</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="./">バージョン 2.0</a></div><div id="page-content"><div id="preamble"><h1>suEXEC サポート</h1>
21 <p><span>Available Languages: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="./ja/suexec.html" title="Japanese"> ja </a> |
23 <a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
24 <a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
26 <div class="outofdate">This translation may be out of date. Check the
27 English version for recent changes.</div>
29 <p><strong>suEXEC</strong>
30 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは
31 異なるユーザ ID で <strong>CGI</strong> プログラムや <strong>SSI</strong>
32 プログラムを実行することができます。CGI プログラムまたは SSI
33 プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。
36 <p>適切に使用すると、この機能によりユーザが個別の CGI
37 や SSI プログラムを開発し実行することで生じるセキュリティ上の危険を、
38 かなり減らすことができます。しかし、suEXEC の設定が不適切だと、
39 多くの問題が生じ、あなたのコンピュータに新しいセキュリティホールを
40 作ってしまう可能性があります。あなたが <em>setuid root</em>
41 されたプログラムと、それらから生じるセキュリティ上の問題の管理に
42 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。
45 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">始める前に</a></li>
46 <li><img alt="" src="./images/down.gif" /> <a href="#model">suEXEC セキュリティモデル</a></li>
47 <li><img alt="" src="./images/down.gif" /> <a href="#install">suEXEC
49 <li><img alt="" src="./images/down.gif" /> <a href="#enable">suEXEC
51 <li><img alt="" src="./images/down.gif" /> <a href="#usage">suEXEC の使用</a></li>
52 <li><img alt="" src="./images/down.gif" /> <a href="#debug">suEXEC のデバッグ</a></li>
53 <li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">とかげに注意: 警告と事例</a></li>
55 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
57 <h2><a name="before" id="before">始める前に</a></h2>
59 <p>この文書の先頭に飛ぶ前に、Apache
60 グループとこの文書での仮定を知っておくべきでしょう。
63 <p>第 1 に、あなたが <strong>setuid</strong> と
64 <strong>setgid</strong> 操作が可能な UNIX
65 由来のオペレーティングシステムを使っていることを想定しています。
66 これは、すべてのコマンド例にあてはまります。
67 その他のプラットホームでは、もし suEXEC
68 がサポートされていたとしても設定は異なるかもしれません。</p>
70 <p>第 2 に、あなたが使用中のコンピュータの
71 セキュリティに関する基本的な概念と、それらの管理について詳しいことを
72 想定しています。これは、<strong>setuid/setgid</strong>
73 操作、あなたのシステム上でのその操作による様々な効果、
74 セキュリティレベルについてあなたが理解しているということを含みます。
77 <p>第 3 に、<strong>改造されていない</strong> suEXEC
78 コードの使用を想定しています。suEXEC のコードは、
79 多くのベータテスタだけでなく、開発者によっても注意深く精査され
80 テストされています。それらの注意により、簡潔で信頼できる安全な
81 コードの基盤が保証されます。このコードを改変することで、
82 予期されない問題や新しいセキュリティ上の危険が生じることがあります。
83 セキュリティプログラミングの詳細に通じていて、
85 グループと共有しようと思うのでなければ、suEXEC
86 コードは変えないことを <strong>強く</strong>推奨します。</p>
88 <p>第 4 に、これが最後ですが、suEXEC を Apache
89 のデフォルトインストールには<strong>含めない</strong>ことが
90 Apache グループで決定されています。これは、suEXEC
91 の設定には管理者の詳細にわたる慎重な注意が必要だからです。
92 suEXEC の様々な設定について検討が終われば、管理者は suEXEC
93 を通常のインストール方法でインストールすることができます。
95 機能の使用中にシステムセキュリティを適切に保つために、
96 管理者によって慎重に決定され指定されることが必要です。
97 この詳細な手順により、Apache グループは、suEXEC
98 のインストールについて、注意深く十分に検討してそれを使用することを
99 決定した場合に限っていただきたいと考えています。
102 <p>それでも進みますか? よろしい。では、先へ進みましょう!</p>
103 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
104 <div class="section">
105 <h2><a name="model" id="model">suEXEC セキュリティモデル</a></h2>
107 <p>suEXEC の設定とインストールを始める前に、
108 まず実装しようとしているセキュリティモデルについて論じておきます。
109 それには、suEXEC の内部で行なわれていること、
110 システムのセキュリティを保証するために警告されることを
111 よく理解しておいた方がよいでしょう。</p>
113 <p><strong>suEXEC</strong> は、Apache web
114 サーバから呼び出される setuid された "wrapper"
115 プログラムが基本となっています。設計した CGI、または SSI
116 プログラムへの HTTP リクエストがあると、この wrapper
117 が呼び出されます。このようなリクエストがあると、Apache
118 はそのプログラムが実行される際のプログラム名とユーザ ID とグループ
119 ID を指定して suEXEC wrapper を実行します。
122 <p>それから、wrapper は成功または失敗を決定するため
123 以下の処理を行ないます。これらの状態のうち一つでも失敗した場合、
124 プログラムは失敗をログに記録してエラーで終了します。
125 そうでなければ、後の処理が続けられます。</p>
130 を実行しているユーザはこのシステムの正当なユーザか?</strong>
133 これは、wrapper を実行しているユーザが
134 本当にシステムの利用者であることを保証するためです。
140 <strong>wrapper が適切な数の引数で呼び出されたか?</strong>
144 wrapper は適切な数の引数が与えられた場合にのみ実行されます。
145 適切な引数のフォーマットは Apache Web サーバに解釈されます。
146 適切な数の引数を受け取らなければ、攻撃をされたか
147 あなたの Apache バイナリの suEXEC の部分が
153 <strong>この正当なユーザは wrapper
154 の実行を許可されているか?</strong>
157 このユーザは wrapper 実行を許可されたユーザですか?
158 ただ一人のユーザ (Apache ユーザ) だけが、
164 <strong>対象の CGI, SSI プログラムが安全でない階層の参照をしているか?
168 対象の CGI, SSI プログラムが '/' から始まる、または
169 '..' による参照を行なっていますか? これらは許可されません。
170 対象のプログラムは suEXEC のドキュメントルート
171 (下記の <code>--with-suexec-docroot=<em>DIR</em></code> を参照)
177 <strong>対象となるユーザ名は正当なものか?</strong>
185 <strong>対象となるグループ名は正当なものか?</strong>
193 <strong>目的のユーザはスーパーユーザでは<em>ない</em>か?
197 今のところ、suEXEC は <code><em>root</em></code> による CGI/SSI
203 <strong>対象となるユーザ ID は、最小の ID
204 番号よりも<em>大きい</em>か? </strong>
207 最小ユーザ ID 番号は設定時に指定されます。これは、
208 CGI/SSI プログラム実行を許可されるユーザ ID
210 "system" 用のアカウントを閉め出すのに有効です。
215 <strong>対象となるグループはスーパーユーザのグループでは
216 <em>ない</em>か?</strong>
219 今のところ、suEXEC は 'root' グループによる CGI/SSI
225 <strong>対象となるグループ ID は最小の ID
226 番号よりも<em>大きい</em>か?</strong>
229 最小グループ ID 番号は設定時に指定されます。これは、
230 CGI/SSI プログラム実行を許可されるグループ
232 これは "system" 用のグループを閉め出すのに有効です。
237 <strong>wrapper が正常に対象となるユーザとグループになれるか?
242 の起動によりプログラムは対象となるユーザとグループになります。
244 ユーザが属しているすべてのグループで初期化されます。
249 <strong>CGI/SSI プログラムが置かれているディレクトリに移動
250 (change directory) できるか?</strong>
253 ディレクトリが存在しないなら、そのファイルも存在しないかもしれません。
254 ディレクトリに移動できないのであれば、おそらく存在もしないでしょう。
259 <strong>ディレクトリが Apache のドキュメントツリー内にあるか?
264 要求されたディレクトリが suEXEC のドキュメントルート配下にありますか?
265 リクエストが UserDir のものであれば、要求されたディレクトリが suEXEC
266 のユーザのドキュメントルート配下にありますか?
267 (<a href="#install">suEXEC 設定オプション</a> 参照)
272 <strong>ディレクトリを他のユーザが書き込めるようになって
273 <em>いない</em>か?</strong>
276 ディレクトリを他ユーザに開放しないようにします。
277 所有ユーザだけがこのディレクトリの内容を改変できるようにします。
283 <strong>対象となる CGI/SSI プログラムは存在するか?</strong>
291 <strong>対象となる CGI/SSI プログラムファイルが他アカウントから
292 書き込めるようになって<em>いない</em>か?</strong>
295 所有者以外には CGI/SSI プログラムを変更する権限は与えられません。
301 <strong>対象となる CGI/SSI プログラムが setuid または setgid
302 されて<em>いない</em>か?</strong>
305 UID/GID を再度変更してのプログラム実行はしません
311 <strong>対象となるユーザ/グループがプログラムの
312 ユーザ/グループと同じか?</strong>
320 <strong>安全な動作を保証するための環境変数クリアが可能か?
325 (これらは設定時に作成されます) 内の変数として渡される安全な
326 PATH 変数 (設定時に指定されます) を設定することで、
333 <strong>対象となる CGI/SSI プログラムを exec して実行できるか?</strong>
337 ここで suEXEC が終了し、対象となるプログラムが開始されます。
342 <p>ここまでが suEXEC の wrapper
343 におけるセキュリティモデルの標準的な動作です。もう少し厳重に
344 CGI/SSI 設計についての新しい制限や規定を取り入れることもできますが、
345 suEXEC はセキュリティに注意して慎重に少しずつ開発されてきました。
349 サーバ設定時にどのように許すことを制限するか、また、suEXEC
350 を適切に設定するとどのようなセキュリティ上の危険を避けられるかに
351 関するより詳しい情報については、<a href="#jabberwock">"とかげに注意"
352 (Beware the Jabberwock)</a> の章を参照してください。
354 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
355 <div class="section">
356 <h2><a name="install" id="install">suEXEC
362 設定オプション</strong><br />
366 <dt><code>--enable-suexec</code></dt>
368 <dd>このオプションは、デフォルトではインストールされず、
369 有効にはならない suEXEC 機能を有効にします。
370 suEXEC を使うように APACI に要求するには、<code>--enable-suexec</code>
371 オプションにあわせて少なくとも一つは <code>--with-suexec-xxxxx</code>
372 オプションが指定されなければなりません。</dd>
374 <dt><code>--with-suexec-bin=<em>PATH</em></code></dt>
376 <dd>セキュリティ上の理由により、<code>suexec</code> バイナリのパスはサーバに
377 ハードコードされている必要があります。デフォルトのパスを
378 変えたいときはこのオプションを使ってください。<em>例えば</em>、
379 <code>--with-suexec-bin=/usr/sbin/suexec</code> のように。</dd>
381 <dt><code>--with-suexec-caller=<em>UID</em></code></dt>
383 <dd>Apache を通常動作させる<a href="mod/mpm_common.html#user">ユーザ名</a>を指定します。
384 このユーザだけが suexec の実行を許可されたユーザになります。</dd>
386 <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt>
388 <dd>suEXEC がアクセスを許されるユーザホームディレクトリ配下の
390 このディレクトリ以下の全実行ファイルは、"安全な"プログラムになるよう、
391 suEXEC がそのユーザとして実行できるようにします。
392 "単純な" UserDir ディレクティブを使っている場合
393 (すなわち "*" を含まないもの)、これと同じ値を設定すべきです。
394 Userdir ディレクティブがそのユーザのパスワードファイル内の
395 ホームディレクトリと同じ場所を指していなければ、
396 suEXEC は適切に動作しません。デフォルトは "public_html" です。
398 各 UserDir が異なった仮想ホストを設定している場合、
399 それらを全て一つの親ディレクトリに含めて、
400 その親ディレクトリの名前をここで指定する必要があります。
401 <strong>このように指定されなければ "~userdir" cgi
402 へのリクエストが動作しません。</strong></dd>
404 <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt>
406 <dd>Apache のドキュメントルートを設定します。これが suEXEC
407 の動作で使用する唯一のディレクトリ階層になります (UserDir
408 の指定は別)。デフォルトでは <code>--datedir</code> に "/htdocs"
410 "<code>--datadir=/home/apache</code>" として設定すると、
411 suEXEC wrapper にとって "/home/apache/htdocs"
412 がドキュメントルートとして使われます。</dd>
414 <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt>
416 <dd>suEXEC の対象ユーザとして許される UID の最小値を指定します。
417 大抵のシステムでは 500 か 100 が一般的です。
420 <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt>
422 <dd>suEXEC の対象グループとして許される GID
423 の最小値を指定します。大抵のシステムでは 100 が一般的なので、
424 デフォルト値としても 100 が使われています。</dd>
426 <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt>
428 <dd>suEXEC の処理とエラーが記録されるファイル名を指定します。
430 デフォルトではログファイルは "suexec_log" という名前で、
431 標準のログファイルディレクトリ (<code>--logfiledir</code>) に置かれます。
434 <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt>
436 <dd>CGI 実行ファイルに渡される安全な PATH 環境変数です。
437 デフォルト値は "/usr/local/bin:/usr/bin:/bin" です。
441 <p><strong>suEXEC wrapper
442 のコンパイルとインストール</strong><br />
443 <code>--enable-suexec</code> オプションで suEXEC 機能を有効にすると、
444 "make" コマンドを実行した時に <code>suexec</code> のバイナリ (Apache 自体も)
447 すべての構成要素が作成されると、それらのインストールには
448 <code>make install</code> コマンドが実行できます。バイナリイメージの <code>suexec</code>
449 は <code>--sbindir</code> オプションで指定されたディレクトリにインストールされます。
450 デフォルトの場所は "/usr/local/apache/sbin/suexec" です。<br />
451 インストール時には <strong><em>root</em></strong>
452 権限が必要なので注意してください。wrapper がユーザ ID
453 を設定するために、所有者 <code><em>root</em></code>
455 ビットをそのファイルのモードに設定しなければなりません。
458 <p><strong>安全なパーミッションを設定する</strong><br />
459 suEXEC ラッパーは、<code>--with-suexec-caller</code> configure
460 オプションで指定した正しいユーザで起動されていることを確認しますが、
461 システム上でこのチェックが行なわれる前に、
462 suEXEC が呼ぶシステムやライブラリが脆弱である可能性は残ります。対抗策として、
465 Apache の実行時のグループのみが suEXEC を実行できるように
468 <p>たとえば、次のようにサーバが設定されていたとします。</p>
470 <div class="example"><p><code>
475 <p><code>suexec</code> が "/usr/local/apache2/sbin/suexec"
476 にインストールされていた場合、次のように設定する必要があります。</p>
478 <div class="example"><p><code>
479 chgrp webgroup /usr/local/apache2/bin/suexec<br />
480 chmod 4750 /usr/local/apache2/bin/suexec<br />
483 <p>これで Apache が実行されるグループのみが
484 suEXEC ラッパーを実行できるということを
486 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
487 <div class="section">
488 <h2><a name="enable" id="enable">suEXEC
491 <p>起動時に、Apache は <code>--sbindir</code>
493 <code>suexec</code> を探します
494 (デフォルトは "/usr/local/apache/sbin/suexec") 。
495 適切に設定された suEXEC がみつかると、
496 エラーログに以下のメッセージが出力されます。</p>
498 <div class="example"><p><code>
499 [notice] suEXEC mechanism enabled (wrapper: <em>/path/to/suexec</em>)
502 <p>サーバ起動時にこのメッセージが出ない場合、
503 大抵はサーバが想定した場所で wrapper プログラムが見つからなかったか、
504 <em>setuid root</em> としてインストールされていないかです。</p>
506 <p>suEXEC の仕組みを使用するのが初めてで、Apache が既に動作中であれば、
507 Apache を kill して、再起動しなければなりません。HUP シグナルや
508 USR1 シグナルによる単純な再起動では不十分です。</p>
509 <p>suEXEC を無効にする場合は、<code>suexec</code> ファイルを削除してから
510 Apache を kill して再起動します。
512 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
513 <div class="section">
514 <h2><a name="usage" id="usage">suEXEC の使用</a></h2>
516 <p>CGI プログラムへのリクエストが suEXEC ラッパーを呼ぶのは、
517 <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> ディレクティブを
518 含むバーチャルホストへのリクエストか、<code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> により
519 処理されたリクエストの場合に限ります。</p>
521 <p><strong>仮想ホスト:</strong><br />
522 suEXEC wrapper の使い方として、
523 <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> 設定での
524 <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code>
526 このディレクティブをメインサーバのユーザ ID
527 と異なるものにすると、CGI リソースへのすべてのリクエストは、その
528 <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> で指定された <em>User</em> と
529 <em>Group</em> として実行されます。<code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>
530 でこのディレクティブが指定されていない場合、
531 メインサーバのユーザ ID が想定されます。</p>
533 <p><strong>ユーザディレクトリ:</strong><br />
534 <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> により処理されたリクエストは
535 リクエストされたユーザディレクトリのユーザ ID で CGI プログラムを
536 実行するために suEXEC ラッパーを呼びます。
537 この機能を動作させるために必要なことは、CGI
538 をそのユーザで実行できること、そのスクリプトが上記の<a href="#model">セキュリティ検査</a>をパスできることです。
539 <a href="#install">コンパイル
540 時のオプション</a> <code>--with-suexec-userdir</code> も参照してください。</p>
541 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
542 <div class="section">
543 <h2><a name="debug" id="debug">suEXEC のデバッグ</a></h2>
545 <p>suEXEC wrapper は、上記で述べた <code>--with-suexec-logfile</code>
546 オプションで指定されたファイルにログ情報を記録します。
547 wrapper を適切に設定、インストールできていると思う場合、
548 どこで迷っているか見ようとするならこのログとサーバの
550 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
551 <div class="section">
552 <h2><a name="jabberwock" id="jabberwock">とかげに注意: 警告と事例</a></h2>
554 <p><strong>注意!</strong>
555 この章は完全ではありません。この章の最新改訂版については、
556 Apache グループの<a href="http://httpd.apache.org/docs/2.0/suexec.html">
557 オンラインドキュメント</a>版を参照してください。
560 <p>サーバの設定に制限をもうける wrapper について、
561 いくつか興味深い点があります。suEXEC に関する "バグ"
562 を報告する前にこれらを確認してください。</p>
565 <li><strong>suEXEC の興味深い点</strong></li>
571 セキュリティと効率の理由から、<code>suEXEC</code> の全てのリクエストは
572 仮想ホストへのリクエストにおける最上位のドキュメントルート内か、
573 ユーザディレクトリへのリクエストにおける個々のユーザの最上位の
574 ドキュメントルート内に残らなければなりません。
575 例えば、四つの仮想ホストを設定している場合、
576 仮想ホストの suEXEC に有利なように、メインの Apache
577 ドキュメント階層の外側に全ての仮想ホストのドキュメントルートを
582 <li>suEXEC の PATH 環境変数
586 これを変更するのは危険です。この指定に含まれる各パスが
587 <strong>信頼できる</strong>
588 ディレクトリであることを確認してください。
589 世界からのアクセスにより、誰かがホスト上でトロイの木馬
598 繰り返しますが、何をやろうとしているか把握せずにこれをやると
599 <strong>大きな問題</strong>を引き起こしかねません。
605 <div class="bottomlang">
606 <p><span>Available Languages: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> |
607 <a href="./ja/suexec.html" title="Japanese"> ja </a> |
608 <a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
609 <a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
610 </div><div id="footer">
611 <p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
612 <p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p></div>