こんばんわ
おやじさんのHPを参考に http.conf の設定をしたのですが、
何回も見直してもユーザーディレクトリでCGIが動作しません・・・
簡単なCGIプログラムで動作確認をしているのですが、
httpd-2.0.40-21 を使っています
# useradd -s /sbin/nologin test
# passwd test ****
# chmod 711 /home/test
それでFFFTPでログインし、
public_html を作成し、
/test/public_html/cgi/*.cgi を追加し、
test 711
public_html 755
cgi 755
*.cgi 755
*.pl 644 パーミッションも正しく設定 しているのですが、動作してくれません;;
試しに、rootでログインし、DocumentRootに
/var/www/public_html/test/cgi/*.cgi
を追加し、パーミッションを正しく設定すると問題なく動作しました
原因がわからず、おやじさんに何か原因がわかれば教えてほしいと思って書き込みました
httpd.conf をアップしました
時間のあるときに設定を見てもらえると嬉しいです
http://carrot.cafenet.jp/clip/img/46.txt
RH標準のApacheを使われていると思いますが、その場合、おやじのとおりにやるとこの問題がでます。過去ログ、No.1451も参考にしてください。
1. userとgroupをnobodyに変更しているはずですが、これがまずい。userとgroupをapacheに戻してください。
#?(´ー`*)
User nobody
Group nobody
2. これで、直らなければ、/usr/sbin/suexec のownerがroot、groupがapacheになっているか確認して、異なっていたら修正してください。
3. 後、本件には直接関係ありませんが?
#公開するフォルダ
DocumentRoot "/home/public_html"
で、いいのですよね。
>さっそく
User nobody
Group nobody
を、
User apache
Group apache
にしたのですが、やはりまだCGIが動作しません。
そこで、
/usr/sbin/suexec
を確認しようと思って
# vi /usr/sbin/suexec で開いたのですが文字化けして確認することができませんでした。
それと、
#公開するフォルダ
DocumentRoot "/home/public_html"
になっていましたが、CGIを動かすために色々試しているときに、
DocumentRootではCGIが問題なく動くので、
DocumentRootを/homeに持っていけばCGIが動作するのでゎ・・・
と考えてやっていた httpd.confをUpしたようで、(結局動きませんでしたが・・・)
本来は /var/www/public_html におく予定でした。
それで今回編集した httpd.conf を又Upしました
http://carrot.cafenet.jp/clip/img/47.txt
それと過去ログ1451を探したのですが・・・ワード検索では、でなくて
どうやって見ればいいのかわかりません ;;
> /usr/sbin/suexec
> を確認しようと思って
> # vi /usr/sbin/suexec で開いたのですが文字化けして確認することができませんでした。
suexecのownerとgroupを確認したいのですから
ls -al /usr/sbin/suexec
ですね。owner:root、group:apacheか確認してください。
> それと、
> #公開するフォルダ
> DocumentRoot "/home/public_html"
> になっていましたが、CGIを動かすために色々試しているときに、
> DocumentRootではCGIが問題なく動くので、
> DocumentRootを/homeに持っていけばCGIが動作するのでゎ・・・
> と考えてやっていた httpd.confをUpしたようで、(結局動きませんでしたが・・・)
> 本来は /var/www/public_html におく予定でした。
/homeのほうが、階層構造がはっきりするのでは?
> それと過去ログ1451を探したのですが・・・ワード検索では、でなくて
> どうやって見ればいいのかわかりません ;;
過去ログP0003の[7]です。P0003で1451で検索してもでます。
早速lsで確認してみたところ、root apache になっていました
# ls -al /usr/sbin/suexec
-r-s--x--- 1 root apache 48741 2月 25 2003 /usr/sbin/suexec
過去ログをあわせて見てみました、
httpd.conf は
User apache
Group apache
にしてあります。
httpdのエラーログを見てみたところ
Premature end of script headers: pass.cgi, referer: http://j-ker.
failed to open log file, referer: http://j-ker.
fopen: Permission denied, referer: http://j-ker.
とでていました
次に、CGIのパーミッションを確認しましたが正しく設定してあります
# tail /etc/httpd/logs/suexec.log と打つと、
[2004-01-23 23:49:00]: uid: (501/ezweb) gid: (501/501) cmd: ezbio.cgi
[2004-01-23 23:55:20]: uid: (501/ezweb) gid: (501/501) cmd: pass.cgi
こうでていました。
user/groupを戻したので、suexecやowner関係は問題ないようです。
> httpdのエラーログを見てみたところ
> Premature end of script headers: pass.cgi, referer: http://j-ker.
> failed to open log file, referer: http://j-ker.
> fopen: Permission denied, referer: http://j-ker.
> とでていました
これが原因です。1行目は、下記を参考にしてください。ftpで転送しましたか?
http://www.aconus.com/~oyaji/faq/apache_cgi3.htm
2行目logfileをあらかじめ作っておかないとだめなcgiなのでは?マニュアルを
見直してはどうですか?
3行目は???。2行目のの関係?
夜遅くレスありがとうございます
パーミッション確認しましたが・・・正しく設定しているみたいです
ほかのCGIにアクセスした場合は、
Premature end of script headers: ezbio.cgi
failed to open log file
fopen: Permission denied
Premature end of script headers: ezmatch.cgi
failed to open log file
fopen: Permission denied
Premature end of script headers: imodebbs.cgi
failed to open log file
fopen: Permission denied
全部同じError msgが出るので、
おやじさんのHPにあるテスト例のCGI
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Your_IP=$ENV{'REMOTE_ADDR'}\r\n";
を、test.cgiとして、
# useradd -s /sbin/nologin joker
# chmod 711 /home/joker
FFFTPでログインし、
publi_html 755 [joker:joker]
を作成し、以下のように転送して、
/home/joker/public_html/test/test.cgi
home 755 [root:root]
joker 711 [joker:joker]
public_html 755 [joker:joker]
test 755 [joker:joker]
test.cgi 755 [joker:joker]
設置したところ、
Premature end of script headers: test.cgi
failed to open log file
fopen: Permission denied
と、やはりでてしまいました ;;
httpd.conf をいじりすぎたかなぁ・・・って思って
一回 httpd を初期化し、
httpd.conf をおやじさんのHPを見ながら設定してみました
結果・・やはり動きませんでした ;;
http://carrot.cafenet.jp/clip/img/48.txt
やっとわかりましたよ。基本的に間違っています。
> # useradd -s /sbin/nologin joker
これはないです。nologinではFTPでログインもできないのでは?
どうやって、コンテンツをjokerのホームディレクトリに置いたのでしょうか?
# useradd -g users -d /home/joker -s /bin/bash -c joker joker
# passwd joker
Changing password for user joker.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
と、シェルは/bin/bashでusersグループで登録して
> # chmod 711 /home/joker
> FFFTPでログインし、
> publi_html 755 [joker:joker]
は駄目で、
publi_html 755 [joker:users]
以下同様にusersグループにして
> を作成し、以下のように転送して、
> /home/joker/public_html/test/test.cgi
> home 755 [root:root]
> joker 711 [joker:users]
> public_html 755 [joker:users]
> test 755 [joker:users]
> test.cgi 755 [joker:users]
で、OKなはずです。
なぜ -s /sbin/nologin にしてたのでしょう・・・
けどFTPで普通にログインできました
ttssh ttermpro 、 WinSCP ではログイン弾かれます
早速、
# userdel joker
# useradd -g users -d /home/joker -s /bin/bash -c joker joker
とうってグループを確認してみると、なぜか510になっていたので、
新しくユーザーを追加しました
# useradd -g users -d /home/j-ker -s /bin/bash -c j-ker j-ker
Groupをusersに、Shellを/bin/bashに、Comment j-ker 、 j-kerを追加
# passwd j-ker
確認したらgroupはちゃんとusersになっていましたので、
j-ker [users:j-ker] 711
public_html [users:j-ker] 755
test [users:j-ker] 755
test.cgi [users:j-ker] 755 改行LF
と設置したところ、やはり動作しません
/etc/httpd/logs/suexec を確認したところ
Premature end of script headers: test.cgi
いままでは3行ほどあったのですが、これだけになっていました。
過去ログに
tail /etc/httpd/logs/suexec.log
を見てみると・・っていうのがあったので
早速見てみると
[2004-01-24 20:15:04]: uid: (511/j-ker) gid: (100/100) cmd: bbs.cgi
[2004-01-24 20:15:04]: cannot run as forbidden gid (100/bbs.cgi)
になっていました
http://j-ker.no-ip.com/~j-ker/test/test.cgi
では動作しないのですが・・・
http://j-ker.no-ip.com/j-ker/public_html/test/test.cgi
では動作します・・
>[2004-01-24 20:15:04]: cannot run as forbidden gid (100/bbs.cgi)
cannot run as forbidden gid‥‥‥‥‥グループIDが100未満なので実行できない
ということらしいのですが、J-kerには理解に苦しく・・
解決したかなーて思ってたら実は未解決でした
原因はFTPにありました
WinSCPでログインしてファイルを転送すると問題なくCGIが動作するのですが
FFFTPでログインしてファイルを転送するとCGIが動作しません・・。
今まで vsftpd を使っていたのですが、
おやじさんのHPを見ながら ProFTPDに Tryしてみます
> WinSCPでログインしてファイルを転送すると問題なくCGIが動作するのですが
> FFFTPでログインしてファイルを転送するとCGIが動作しません・・。
途中で割り込んですいません。
もしやFFFTPの転送モードの設定では?
CGIスクリプトはアスキーモードでアップロードされてます?
はい 拡張子で自動で判断してFFFTPで転送してくれるので・・・
それで vsftpd をやめて、 ProFTPD をつかったところ
無事CGIも動作してくれました
FFFTPの chrootの設定が間違ってたのかもしれません・・・
chroot の設定をみたHPがRedhat7〜で、今の環境と違ったからからかな・・
無事解決しました^^