[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
----------------------------------------------------------------------