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

[debian-users:11338] CERN httpd: CGI under home dir



 こんにちは。島田です。

 Debian GNU/Linux 2.0 付属の cern-httpd をインストールしました。

 ホーム・ディレクトリで CGI を動かそうとすると Error 500 Internal
error: execve() failed が出てしまいます。

 /etc/cern-httpd.conf には、

    Exec  /cgi-bin/*     /usr/lib/cgi-bin/*
    Exec  /~*/cgi-bin/*  /home/*/public_html/cgi-bin/*

と書き、kill -HUP cern-httpdのPID しました。

 $HOME/public_html/cgi-bin に、簡単な CGI プログラム prog.cgi を置きまし
た。
 $HOME/public_html も $HOME/public_html/cgi-bin も
$HOME/public_html/cgi-bin/prog.cgiもパーミッションは 755 です。

 どこがおかしいのでしょうか。よろしくお願いいたします。


試してみたこと:

 prog.cgi を /usr/lib/cgi-bin にもコピーしました。

 $HOME/public_html/index.html には、

    <a href="cgi-bin/prog.cgi">CGI HOME</a><br>
    <a href="/cgi-bin/prog.cgi">CGI /usr/lib/cgi-bin</a><br>

のように書いてあります。

 ブラウザで「CGI /usr/lib/cgi-bin」をクリックすると、ちゃんと prog.cgi 
が起動して画面に結果が表示されますが、「CGI HOME」をクリックすると Error
500 Internal error: execve() failed と表示されてしまいます。

 $HOME は実際には /home/shimaden です。CGI は nobody UID で実行されるそ
うなので、試しに、

    if(setuid(65534) == 0) {
        execve("/home/shimaden/public_html/cgi-bin/prog.cgi", NULL,
        NULL);
    }

と C で書いて見ましたら、ちゃんと nobody UID でも prog.cgi は execve() で
きました(prog.cgi の出力が表示されたので)。


----------------------------------------------------------------------
Mail: shimaden@xxxxxxxxxxx
Home Page: http://www.annie.ne.jp/~shimaden/
島田博幸
Hiroyuki Shimada
----------------------------------------------------------------------