CGIを使うための情報

設定

Qube2700 では、コントロールパネル→アクセス権限を選び 「CGIスクリプトのインストール」を「オープン」にします。 (内部的には、この設定で /etc/httpd/conf/ALLOW_USER_CGIS ファイルが空のまま作成されます。)
RaQ2 では管理画面の「サイトの管理」で、「サイトの設定」を選び、 「CGIスクリプトを使う」「SSI(Server Side Includes)を使う」をそれぞれ 設定します。
基本的に設定はそれだけです。

英語版 Qube2700 では Control Panel の Access Rights の Install CGI Scirpt を Restricted ではなく、Open にします。

この設定を行っていないまま、CGI プログラムを起動しようとすると、

CGIWrap Error: User CGIs Prohibited
というメッセージが Web ブラウザに返ってきます。

RaQ2 では、サイトの管理→サイトの設定を選び、「CGIスクリプトを使う」に チェックをします。

これ以上詳しい設定変更を要する人は、/etc/httpd/conf/ を 直接更新するしかないと思いますが、よく判らない人は 触らない方が良いと思います。

CGI Wrapper について

Cobalt では CGI プログラムは CGI Wrapper (ラッパー)を 経由して起動されます。
このため、CGI プログラムの動作権限は、一般的な Unix に おける標準的な CGI ユーザである nobody, http, web などでは なく、その CGI プログラムを置いてあるディレクトリの持ち主と なります。
(Unix 流に正確に言うと、ディレクトリの owner は問題では ありません。場所だけが問題で、その場所が User foo の ホーム以下であったとすると、foo の権限で動作します。)

cgiプログラムの置き場所

CGI Wrapper が間に入ってくれている関係で、Cobalt では、 CGI プログラムの置場所はどこでも構いません。 ただし、呼び出し方は当然 URL による指定となりますので、 html ファイルを置いてアクセス出来るディレクトリでなければなりません。

例えば、www.foo.co.jp というドメインのマシンの、bar というユーザが CGI プログラムを置く場合なら http://www.foo.co.jp/users/bar/sample.cgi という名前で、通常の HTML ファイルのようにアクセス出来ます。 拡張子は .cgi でないといけません。

ところがトップディレクトリ、つまり /home/httpd/html/groups/home/ 以下に sample.cgi を置いた場合、http://www.foo.co.jp/sample.cgi で実行した場合は
CGIWrap Error: User not found
CGIWrap was unable to find the user 'cat.cgi' in the password file on this server. というエラーになります。
対処法としては、http://www.foo.co.jp/groups/home/sample.cgiで アクセスするか、sample.cgi を/home/httpd/cgi-bin/ 以下に置いて、 http://www.foo.co.jp/cgi-bin/sample.cgi でアクセスするかどちらかになります。

実行権についての注意

ファイルに実行権が付いていないといけません。
FTPソフトの、「アクセス権設定」「Set Permission」などという 設定機能を利用するのが良いでしょう。
この設定を間違っている CGI プログラムを起動しようとすると、
CGIWrap Error: Execution of this script not permitted
というエラーが Web ブラウザに返ってきます。

ユーティリティソフトのパス (Qube2700の場合)

PERL : /usr/bin/perl
awk : /bin/awk
nkf : /usr/local/sbin/nkf : 漢字コード変換ツール 日本語版 Cobalt のみ
grep : /bin/grep, /bin/egrep : 正規表現による文字列マッチ
sed : /bin/sed : ストリームエディタ
tr : /usr/bin/tr : 文字変換
sort : /bin/sort : ソート(整列)
expand : /usr/bin/expand : TAB を必要数の空白に変える
unexpand : /usr/bin/unexpand : 連続する空白を必要な TAB に変える
gzip : /bin/gzip, /bin/gunzip, /bin/zcat : GNU gz による圧縮
date : /bin/date : 日付・時刻を得る
shell : /bin/sh : シェル (bash)
mail : /bin/mail : メイル送信
sendmail : /usr/sbin/sendmail(実体) /usr/lib/sendmail(シンボリックリンク)
chmod : /bin/chmod : ファイルのアクセス権限設定

SSI の設定

設定

RaQ2 では、サイトの管理→サイトの設定を選び、 「SSI(Server Side Includes)を使う」にチェックをします。 このようにすれば、拡張子を .shtml としておけば動くと思います。

Qube2700 の場合、CGI の場合同様に、コントロールパネル→アクセス権限を選び 「CGIスクリプトのインストール」を「オープン」にしておく必要があります。
(内部的には、この設定で /etc/httpd/conf/ALLOW_USER_CGIS ファイルが空のまま作成されます。)

英語版では Control Panel の Access Rights の Install CGI Scirpt を Restricted ではなく、Open にします。

Cobalt では Web から設定するようなものが用意されていませんので、 これ以降は設定ファイルを直接編集するしか有りません。

/etc/httpd/conf/srm.conf の 146行目近辺を

AddType text/html .shtml
AddHandler server-parsed .shtml
というようにします。(元は # 付きでコメントアウトされています。)

また、/etc/httpd/conf/access.conf の 24 行目近辺、

<Directory /home/httpd/html>
(RaQの場合は Directory /home/sites/home の部分) の少し下の Options 行に Includes を追加します。つまり、
Options Indexes SymLinksIfOwnerMatch
となっている行が、以下のようになります。
Options Indexes SymLinksIfOwnerMatch Includes
このようにすれば、拡張子を .shtml としておけば動くと思います。

ちなみに、exec は許可されてしまいます。exec を実行させたくない場合は Includes の代わりに IncludesNOEXEC と書きます。

大事なことですが、コンフィグを書き換えた場合は httpd のリスタートが必要です。 やり方が判らない場合は、Cobalt そのものを再起動するのが安全確実です。

Oct. 1998.
Thanks for Shibuya, Koyama and Yamamoto
Apr. 1999.
Thanks for Aoki.


This page is administrated by
Cobalt Users Group. (usersgroup@cobaltqube.org)
All rights are reserved.
[BACK]