Top過去ログ目次掲示板

作成日:2004年07月02日 作成:おやじ
掲示板で過去に質問された内容です。

No.3270 ユーザーディレクトリーのCGI使用について


No.3270 投稿時間:2004年07月02日(Fri) 00:43 投稿者名:いしかわ URL:
タイトル:ユーザーディレクトリーのCGI使用について

はじめまして、石川と申します。REDHAT9でデフォルトインストールのapache2.0.40-21を
使用しております。DocumentRootを /home/website"とし、websiteの中にcgi-binを
作ってhttp://izu22.cool.ne.jp/y-pg/の掲示板を設置しました。
/home/website/cgi-bin/joyfulyy.cgi こんな感じです。その時の設定は
----------------------------------------------------------------------------
<Directory "/home/siteroot">
Options ExecCGI FollowSymLinks IncludesNOEXEC MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
----------------------------------------------------------------------------
これで、正常に動作しました。で、試しにユーザーディレクトリーにも設置した
ところ、500のエラーが出ました。/home/*/public_html/cgi-bin/joyful.cgi
そのときの設定は
----------------------------------------------------------------------------
UserDir /home/*/public_html
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch ExecCGI IncludesNoExec
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
-----------------------------------------------------------------------------
掲示板を拝見しましたところ、同じようなユーザーディレクトリーのCGI使用について
を参考にいたしまして
/home------/testusr---+----/public_html--------/index.html
|
+----/cgi-bin------------/joyfulyy.cgi
という形に変え、以下の設定を付け加えました。
-----------------------------------------------------------------------------
ScriptAliasMatch ^/~([a-zA-Z0-9_-]+)/cgi-bin/(.+) /home/$1/cgi-bin/$2
<Directory /home/*/cgi-bin/>
Options ExecCGI
AddHandler cgi-script .cgi
AddHandler text/html .html .htm
AddHandler image/gif .gif
AddHandler image/jpg .jpg
</Directory>
------------------------------------------------------------------------------
これで、一様動作するようにはなりましたが、フリーで配布されているCGIのなかには
すべて、cgi-binの中に詰め込むものが多く、アップローダーのようにzip,lzh,mpgなど
何でも使えるぞっ!といったものに対しては、すべてAddHandlerを記述しなければ
ならないのですか?imageやuploadなどを、cgi-bin以外に置けば良いだけのこと
みたいですが、単純に /home/testusr/public_html/cgi-bin/joyfulyy.cgiみたいに
詰め込むには、どうしたら良いか煮詰まってしまいました。セキュリティー上あまり
お勧めでないかもしれませんが、どなたかご教授いただけますよう宜しくお願いいたします。


No.3271 投稿時間:2004年07月02日(Fri) 03:48 投稿者名:いしかわ URL:
タイトル:Re: ユーザーディレクトリーのCGI使用について

すみません、ずれちゃいました。
/home------/testusr---+----/public_html--------/index.html
            |
            +----/cgi-bin------------/joyfulyy.cgi
testusrの中にpublic_htmlとcgi-binがあります。


No.3273 投稿時間:2004年07月02日(Fri) 07:23 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/
タイトル:発想を変えれば簡単です。但しセキュリティを考えて。

> -----------------------------------------------------------------------------
> 掲示板を拝見しましたところ、同じようなユーザーディレクトリーのCGI使用について
> を参考にいたしまして
> /home------/testusr---+----/public_html--------/index.html
>                       |
>                       +----/cgi-bin------------/joyfulyy.cgi
> という形に変え、以下の設定を付け加えました。
> -----------------------------------------------------------------------------
>  ScriptAliasMatch ^/~([a-zA-Z0-9_-]+)/cgi-bin/(.+) /home/$1/cgi-bin/$2
> <Directory /home/*/cgi-bin/>
> Options ExecCGI
> AddHandler cgi-script .cgi
> AddHandler text/html .html .htm 
> AddHandler image/gif .gif
> AddHandler image/jpg .jpg
> </Directory> 
> ------------------------------------------------------------------------------
> これで、一様動作するようにはなりましたが、フリーで配布されているCGIのなかには
> すべて、cgi-binの中に詰め込むものが多く、アップローダーのようにzip,lzh,mpgなど
> 何でも使えるぞっ!といったものに対しては、すべてAddHandlerを記述しなければ
> ならないのですか?imageやuploadなどを、cgi-bin以外に置けば良いだけのこと
> みたいですが、単純に /home/testusr/public_html/cgi-bin/joyfulyy.cgiみたいに
> 詰め込むには、どうしたら良いか煮詰まってしまいました。セキュリティー上あまり
> お勧めでないかもしれませんが、どなたかご教授いただけますよう宜しくお願いいたします。

 「すべてAddHandlerを記述しなければならないのですか?」といわれれば、cgi-binディレクトリを使う限り設定を変更しなければ、答えは「そうです」となります。つまりデフォルトの設定では、「cgi-bin」というディレクトリ内のものは全てスクリプトとして実行するようになっているので、そうせざるを得ません。
 逆に「□い頭を○くする」というどこかの塾のキャッチではありませんが、cgiはcgi-binディレクトリに置かなければいけないという概念を忘れて、cgi-binというディレクトリ名を使わなければ、この呪縛から開放されます。
 今アクセスされているこの掲示板は、どういうアクセスになっていますか? これと同じことをすればいいのです。おやじのところでは、
 http://www.aconus.com/~oyaji/bbs/wforum.cgi で

 /home --- /oyaji --- /public_html --- /bbs --- /wforum.cgi

にアクセスさせ、 /home/*/public_html でExecCGI を有効にしています。これで、
AddHandler cgi-script .cgi .pl で指定した拡張子以外はデフォルトの処理がされるので、普通はcgi中にhtmlやgifがあっても何も意識せずに動作させることができます。
 ただ、cgi-binディレクトリはもともとセキュリティのために使用するのですから、信用できるユーザ以外(ここでいう信用できるとは、cgiを管理できるという意味も含む)がこのサーバを使用するとなると、ユーザディレクトリ配下でcgiを動作できるようにする、即ち、/home/*/public_html でExecCGI を有効することの危険性は十分に認識しておく必要があります。下記も参考にしてください。使いやすさと管理は往々にして背反条件になります。

 http://www.aconus.com/~oyaji/tips/apache_tips3.htm


No.3282 投稿時間:2004年07月02日(Fri) 19:12 投稿者名:いしかわ URL:
タイトル:Re: 発想を変えれば簡単です。但しセキュリティを考えて。

>  逆に「□い頭を○くする」というどこかの塾のキャッチではありませんが、cgiはcgi-binディレクトリに置かなければいけないという概念を忘れて、cgi-binというディレクトリ名を使わなければ、この呪縛から開放されます。
>  今アクセスされているこの掲示板は、どういうアクセスになっていますか? これと同じことをすればいいのです。おやじのところでは、
>  http://www.aconus.com/~oyaji/bbs/wforum.cgi
>
>  /home --- /oyaji --- /public_html --- /bbs --- /wforum.cgi
>
> にアクセスさせ、 /home/*/public_html でExecCGI を有効にしています。これで、
> AddHandler cgi-script .cgi .pl で指定した拡張子以外はデフォルトの処理がされるので、普通はcgi中にhtmlやgifがあっても何も意識せずに動作させることができます。


さっそくのアドバイスありがとうございます。なんと、まー目から鱗の思いでした。(^。^;;
cgiはcgi-binに入れなければならないのではなく、セキュリティーの為に別管理するべく
cgi-binを使うのですね。今の所は、自分しか使わないので内部的には問題なさそうですが
勉強したいと思います。外からの不正アクセスうんぬんって事なのかなぁ?
とは言え、楽チン設置の魅力が・・・試しに/home/testusr/public_html/bbs/joyfulyy.cgi
とした所、500のエラーが出ました。cgi-binでは動作するがpublic_html以下では動作しない
となると、やはりDirectoryの設定がおかしいのですか?
まだ□い頭のままなので、再度お知恵を御拝借できますよう宜しくお願いいたします。


No.3285 投稿時間:2004年07月02日(Fri) 21:14 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/
タイトル:パーミッションや改行コードでしょう。

> さっそくのアドバイスありがとうございます。なんと、まー目から鱗の思いでした。(^。^;;
> cgiはcgi-binに入れなければならないのではなく、セキュリティーの為に別管理するべく
> cgi-binを使うのですね。今の所は、自分しか使わないので内部的には問題なさそうですが
> 勉強したいと思います。外からの不正アクセスうんぬんって事なのかなぁ?
> とは言え、楽チン設置の魅力が・・・試しに/home/testusr/public_html/bbs/joyfulyy.cgi
> とした所、500のエラーが出ました。cgi-binでは動作するがpublic_html以下では動作しない
> となると、やはりDirectoryの設定がおかしいのですか?

 この逆はあっても、cgi-binで動いたCGIがpublic_html で500エラー(500なので、CGIとしては動作しているということです。)になることは基本的にありませんから、設置条件がおかしいか、SuEXEC問題ぐらいしかないはずです。FAQを見てみてください。


No.3287 投稿時間:2004年07月02日(Fri) 22:14 投稿者名:いしかわ URL:
タイトル:解決!?SuEXECみたいでした。

> > さっそくのアドバイスありがとうございます。なんと、まー目から鱗の思いでした。(^。^;;
> > cgiはcgi-binに入れなければならないのではなく、セキュリティーの為に別管理するべく
> > cgi-binを使うのですね。今の所は、自分しか使わないので内部的には問題なさそうですが
> > 勉強したいと思います。外からの不正アクセスうんぬんって事なのかなぁ?
> > とは言え、楽チン設置の魅力が・・・試しに/home/testusr/public_html/bbs/joyfulyy.cgi
> > とした所、500のエラーが出ました。cgi-binでは動作するがpublic_html以下では動作しない
> > となると、やはりDirectoryの設定がおかしいのですか?
>
>  この逆はあっても、cgi-binで動いたCGIがpublic_html で500エラー(500なので、CGIとしては動作しているということです。)になることは基本的にありませんから、設置条件がおかしいか、SuEXEC問題ぐらいしかないはずです。FAQを見てみてください。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

たびたびお手数をおかけ致しまして申し訳ないです。CGI自体は丸ごとmvしたので
多分問題はないと思います。
『SuEXEC問題ぐらい・・・』何のことなのか分かりませんですが、とりあえず無効にして
# mv /usr/sbin/suexec /usr/sbin/suexec.bk
# /etc/rc.d/init.d/httpd restart
と、したら・・・あっさり動作いたしました。またもや目から鱗でしたが、今回は
まったく意味が分かっていないので、『SuEXEC』って何?を勉強したいと思います。
何とか目的のことは解決に至りました。ありがとうございました。



掲示板▲頁先頭