投稿日:2004年07月24日 作成鷹の巣

No.16836 Redhat9+Apache2.0のCGIで、Linuxユーザー名とCGIのディレクトリ名が同一の場合に500エラーになる。



Redhat9+Apache2.0のCGIで、Linuxユーザー名とCGIのディレクトリ名が同一の場合に500エラーになる。

No.16836 投稿時間:2004年07月24日(Sat) 15:58 投稿者名:yoshi URL:

当方 Redhat9+Apache2.0+Wu-FTPで身内のみで利用する目的で鯖を立てたいのですが
FTP接続の為Linuxに新規ユーザー(user)を作成しFTP接続先の参照ディレクトリを「/home/user」とし、
「/home/user」ティレクトリでCGIを利用するべくApacheの設定をやってみたのですが
いざCGIを動かそうとした際にパーミッションの設定は合っているにも関わらず
500エラーでどうしても動いてくれない状態になってしまっています。
Apacheの設定が誤っているのかと思い
Linuxユーザーに「Linux」で登録し接続先を「/home」にし「/home/user」でCGIを再度試した結果無事に動いていました。
説明の仕方がイマイチなので簡潔に申しますと、
Linuxユーザー名=CGIを動かす為のディレクトリ名が同一の場合に限って500エラーになってしまうと言う状況です。
尚apachectlでチェックした所OKでしたので誤字などのミスは無いようです。
以上の様な状況からLinuxユーザー名で問題なくCGIを動かす為にはどうしたら良いのでしょうか。
(設定の問題が何重も重なってこの様な状況下もしれませんがお願いします)


Perlパスとか改行コード問題とかは確認しましたか?

No.16837 投稿時間:2004年07月24日(Sat) 19:06 投稿者名:APACHE URL:http://kemuri-net.dip.jp/~server/worm.txt

Perlパスとか改行コード問題とかは確認しましたか?


直接CGIを実行した場合の結果は?

No.16838 投稿時間:2004年07月24日(Sat) 19:46 投稿者名:stranger URL:

> 当方 Redhat9+Apache2.0+Wu-FTPで身内のみで利用する目的で鯖を立てたいのですが
> FTP接続の為Linuxに新規ユーザー(user)を作成しFTP接続先の参照ディレクトリを「/home/user」とし、
> 「/home/user」ティレクトリでCGIを利用するべくApacheの設定をやってみたのですが
> いざCGIを動かそうとした際にパーミッションの設定は合っているにも関わらず
> 500エラーでどうしても動いてくれない状態になってしまっています。
> Apacheの設定が誤っているのかと思い
> Linuxユーザーに「Linux」で登録し接続先を「/home」にし「/home/user」でCGIを再度試した結果無事に動いていました。
> 説明の仕方がイマイチなので簡潔に申しますと、
> Linuxユーザー名=CGIを動かす為のディレクトリ名が同一の場合に限って500エラーになってしまうと言う状況です。
> 尚apachectlでチェックした所OKでしたので誤字などのミスは無いようです。
> 以上の様な状況からLinuxユーザー名で問題なくCGIを動かす為にはどうしたら良いのでしょうか。
> (設定の問題が何重も重なってこの様な状況下もしれませんがお願いします)

httpd.confのuserディレクトリの設定
userディレクトリのパーミッション
cgiファイルのパーミッション
suexecの有効・無効
サーバにログインして直接CGIを実行した場合の結果
などをアップした方が、レスがつくかも?


まずログを見る

No.16839 投稿時間:2004年07月24日(Sat) 19:58 投稿者名:ふぁらだ URL:

初心者ほどログを見ない。
まずログを見る。
それだけで中級者になれるぞ。(ログの内容を理解できれば)


設定内容。

No.16840 投稿時間:2004年07月24日(Sat) 20:22 投稿者名:yoshi URL:

>Perlパスとか改行コード問題とかは確認しましたか?
はい上記の問題に関しては確認済みです。
パス・改行コード・転送モードに関しては問題無いようです。

設定などに関して表記するのは当たり前の事でしたね^^;
> httpd.confのuserディレクトリの設定
------------------------------------------
<Directory /home/user>
AllowOverride None
Options ExecCGI FollowSymLinks Includes
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
-------------------------------------------
> userディレクトリのパーミッション
userディレクトリに関しては755です。
> cgiファイルのパーミッション
CGIのパーミッションは 755.711は確認済みで他のディレクトリでは755でのアクセス可能を確認しています。
> suexecの有効・無効
この項目に関しては他のHPで調べたりしたのですが熟読した上で理解を深めないと分かりませんでした。
> サーバにログインして直接CGIを実行した場合の結果
-------------------------------------------------
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: test.cgi
-------------------------------------------------
> まずログを見る
ログに関してはエラーメッセージと同様に
「Premature end of script headers: test.cgi」でした。

書き込み後色々と調べて見たのですがユーザー名を変更後ノータッチにしておいたディレクトリ内のCGIに再度アクセスした所問題なくアクセス出来ると言った状態です。(ユーザー名の変更に伴って所有権は変更後のユーザーにしてあります)
だらだらと長文になりましたが以上の様な感じです


Perlのパスのあとに「 --」を追加して直るなら改行コードの問題の可能性が高い。

No.16841 投稿時間:2004年07月24日(Sat) 22:41 投稿者名:APACHE URL:

> >Perlパスとか改行コード問題とかは確認しましたか?
> はい上記の問題に関しては確認済みです。
> パス・改行コード・転送モードに関しては問題無いようです。

「無いようです。」で実際問題あったことが何回もあったから「無いようです。」は信用できないけどね。

「無いです。」と否定できるまでは確認した方がいい。
ちなみにPerlのパスのあとに「 --」を追加して直るなら改行コードの問題の可能性が高いけどね。
※#! /usr/bin/perl --


「suexecの有効・無効」に関して確認している現状です。

No.16843 投稿時間:2004年07月25日(Sun) 06:07 投稿者名:yoshi URL:

> ※#! /usr/bin/perl --
こちらの方法も検索して拝見しましたのでやって見ましたが変わりませんでした。
前のレスに書いたようにLinuxに登録していない名前のユーザーディレクトリでは問題なく動く様で
Linuxユーザー登録→ユーザーの名前でディレクトリを作成→CGIの設置→500エラー確認→Linuxユーザー名の変更
→ファイルの所有者名変更(それ以外はノータッチ)→再度CGIにアクセスで問題無く動作
と言った感じです。
ユーザーの辺りが怪しそうなのでstrangerさんが例に挙げてくれました「suexecの有効・無効」に関して
確認している現状です


suexecを試しに無効にした結果CGIのエラーが解消されました。

No.16844 投稿時間:2004年07月25日(Sun) 06:55 投稿者名:yoshi URL:

> ユーザーの辺りが怪しそうなのでstrangerさんが例に挙げてくれました「suexecの有効・無効」に関して
> 確認している現状です
自己レスになります。
suexecを試しに無効にした結果CGIのエラーが解消されました
しかし、実行権などの制御を行う?suexecを無効にしたままでは不安なので
suexecの内容を熟読した上Apacheの再設定を行う方向でやろうかと思います

以上今回の問題に関してはやっと原因が判明した?っぽいです
状況を把握するに苦労するような書き込みにレス・助言を頂いた皆様本当にありがとう御座いました


ユーザ登録されたuserディレクトリでhtmlファイルは標示できますか?

No.16845 投稿時間:2004年07月25日(Sun) 06:56 投稿者名:stranger URL:

> > ※#! /usr/bin/perl --
> こちらの方法も検索して拝見しましたのでやって見ましたが変わりませんでした。
> 前のレスに書いたようにLinuxに登録していない名前のユーザーディレクトリでは問題なく動く様で
> Linuxユーザー登録→ユーザーの名前でディレクトリを作成→CGIの設置→500エラー確認→Linuxユーザー名の変更
> →ファイルの所有者名変更(それ以外はノータッチ)→再度CGIにアクセスで問題無く動作
> と言った感じです。
> ユーザーの辺りが怪しそうなのでstrangerさんが例に挙げてくれました「suexecの有効・無効」に関して
> 確認している現状です

静的にリンクされているモデュールの調べ方
httpd -l ←(小文字のエル)
動的にリンクされているモデュールは、httpd.confに記載されます
redhat9の場合、suexecはモデュールとしてインストールされてますが
デフォルトではhttpd.confに記述されてないようです→デフォルトでは無効

ところでユーザ登録されたuserディレクトリでhtmlファイルは標示できますか?
userディレクトリの中をCGIファイルだけにした場合はどうなりますか?


htmlファイルは表示されます。

No.16849 投稿時間:2004年07月25日(Sun) 14:06 投稿者名:yoshi URL:

> ところでユーザ登録されたuserディレクトリでhtmlファイルは標示できますか?
はい。htmlファイルは表示されます。
> userディレクトリの中をCGIファイルだけにした場合はどうなりますか?
TOPページの宣言としまして「index.html index.htm index.shtml」を指定していまして
該当のファイルが無い場合はインデックス表示不可としてますのでNot Found表示されるのでcgiファイルのみUPした場合も
同様にNot Foundと表示されます

suexecに関しては参考になるようなHPを観覧して調査中です。


apache 2.0 suexecの基本はここ。

No.16851 投稿時間:2004年07月25日(Sun) 16:12 投稿者名:stranger URL:

> > ところでユーザ登録されたuserディレクトリでhtmlファイルは標示できますか?
> はい。htmlファイルは表示されます。
> > userディレクトリの中をCGIファイルだけにした場合はどうなりますか?
> TOPページの宣言としまして「index.html index.htm index.shtml」を指定していまして
> 該当のファイルが無い場合はインデックス表示不可としてますのでNot Found表示されるのでcgiファイルのみUPした場合も
> 同様にNot Foundと表示されます
> > suexecに関しては参考になるようなHPを観覧して調査中です。

apache 2.0 suexecの基本はここ
http://httpd.apache.org/docs-2.0/ja/suexec.html


|目次|掲示板|過去ログ目次|▲頁先頭|