[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:40834] Re: CGIは絶対ディレクトリ指定でないと、動かない?



杉浦です。

>>> In Message "[debian-users:40828] Re: CGIは絶対ディレクトリ指定でないと、動かない?"
>>>            <NEBBLIBDOLEAJJBKAFDDEECIEBAA.kikuchic@xxxxxxxxxxxxxxxxx>,
>>> "T.Kikuchi" <kikuchic@xxxxxxxxxxxxxxxxx>  said;
> > 恐らく喜瀬さんが仰ったのは SSI cmd で /bin/pwd を実行したら
> > どうなるか、と言う話だと思いますよ。

> > pwd を起動し終わったら、他にも
> > <!--#exec cmd="ls -l ./cgi-bin"-->
> > <!--#exec cmd="ls -l ./cgi-bin/counter.pl"-->
> > <!--#exec cmd="ls -l"-->
> > とかやってみると何が起こっているのか大体分かるでしょうか。

> <!--#exec cmd="ls -l ./cgi-bin"-->では、何も出ず、
> <!--#exec cmd="ls -l ./cgi-bin/counter.pl"-->でも、何も出ず、
> <!--#exec cmd="ls -l"-->では、ファイルなどが出ますが、cgi-binのディレクトリは出ませんでした。
> <!--#exec cmd="/bin/pwd"-->では、/var/www と出ました。

出ました。はいいのですが、その意味について考えてみて下さいな。

・何もでないというのはファイルがないからです。
・pwd の出力結果はカレントディレクトリです。
・その指定では全て SSI 経由でコマンドが実行されています。
・実行されているのは CGI ではありません。
・DocumentRoot 以下に無いはずの /bin/pwd や ls が実行できています

> httpd.confのcgi-bin 周りの設定は、下記の様になっていますが・・・・。

> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

> <Directory /usr/lib/cgi-bin/>
>     AllowOverride None
>     Options ExecCGI
>     Order allow,deny
>     Allow from all
> </Directory>

> 依然として、相対指定では動いてくれません。

ScriptAlias は今回関係ありません。
Directory /usr/lib/cgi-bin/ に関する指定は関係ありません。
Options の ExecCGI も関係ありません。

もう一度になりますが、「SSI を使ったコマンド実行」と 「CGI」 の
区別をしましょう。基本的にそれで解決します。

> お気づきの点がありましたら、宜しくお願い致します。

……と、書くのもだんだん面倒になってきたので手順だけ書いてしまいます。
以下のコマンドを完全にそのまま実行すると、最短手順でお望みのことが
出来るでしょう。

$ su -
Passwd: #ルートパスワードを入れる
# cd /var/www
# ln -s /usr/lib/cgi-bin
# chown www-data:www-data cgi-bin
# exit
$ 

ただし、全然良い方法ではありません。折角 Debian が標準で分離して
くれているのをまたくっつけてしまうので、多少セキュリティーリスクを
抱えることになります。



---
ちなみに、妥当な方法は、まずそのカウンタスクリプトを CGI として(も)
動くように修正し、そのあと、SSI の #exec ではなく #include を使って
CGI の実行結果を取り込むか、カウンタが画像なら <img src= タグを使って
表示する事でしょう。

-- 
Tatsuki Sugiura   mailto:sugi@xxxxxxxxxxxxxxxxxxxxxxxxxxx