Kenji Arisawa
E-mail: arisawa@aichi-u.ac.jp
Aichi University
Kurozasa 370, Miyoshi-cho
Aichi, Japan
2002/02/01

Powered by Pegasus
サービス空間
説明
httpd のサービス空間とは httpd がサービスを行っている時の名前空間です。
UNIX のユーザはこの概念には馴染みがないと思えます。
なにしろ UNIX では(それだけではなく Plan9 以外の全ての OS では) httpd の
サービス空間は httpd が動いているコンピュータの名前空間の全てです。
(そしてその事がいろいろな問題を引き起こします。)
だからそのような名前は必要としないのです。
Plan9 ではサービス空間を編成できます。
さらに Pegasus ではサービス空間を、ユーザごと、仮想ホストごとに編成
しています。
編成は基本的に
/lib/namespace.httpd
によって行われます。
編成の結果生まれる標準的な名前空間は
/bin # CGI で使用
/dev # CGI で必要になるかも
/doc # ドキュメントルート
/env # CGI で使用する
/etc # アクセス制限で使用する
/lib # CGI で必要になるかも
/mnt # ユーザと仮想ホストのサポートに必要
/net # 認証サーバを使用する時に必要
/rc # CGI で必要
/sys # CGI で必要かも
/tmp # CGI で必要
です。これらの全てが必要な訳ではありません。
例えば CGI を使用しないシステムで、ユーザも仮想ホストも存在しないなら
/doc
だけが必要です。
認証サーバを使用しない場合には /net は必要ありません。
名前空間はシステム管理者が準備しますが、ユーザや仮想ホストも編成に
参加できます。(この場合には無制限と言うわけにはいきません。)
例えば
/bin や /sys などに自分のコマンドやファイルを追加できます。
/doc と /etc は特殊です。ユーザや仮想ホストへのアクセスの場合には
これらの中身はアクセスの対象となったユーザや仮想ホストのものと
置き換わります。
/doc はドキュメントルート
/etc には passwd, allow, rewrite, namespace.cgi が置かれる
事を考えると当然の要求です。
ユーザや仮想ホストは各々サービス空間を与えられます。
例えばユーザ alice は
/usr/alice/web
を Web サービスを行うために与えられます。この場合
/usr/alice/web/doc
が alice のホームページになります。(alice がホームページを持つために
システムファイルの変更は必要ありません。)
この doc はサービス空間の中では
/doc
として見えます。
alice が
/usr/alice/web/etc
を持てば、この etc はサービス空間の中では
/etc
として見えます。サービス空間の中の /etc の passwd や allow や rewrite は
実際には alice のファイルなので、alice は自分のデータに対する制御ができる
ことになります。
/usr/alice/etc/namespace.cgi
は
サービス空間の中では
/etc/namespace.cgi
として見えますが、このファイルは CGI の実行空間を編成します。
以上ではユーザ alice を例にとりましたが、仮想ホストに対しても同様です。