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 を例にとりましたが、仮想ホストに対しても同様です。