サーバを移転する際に困ったことは、
「一部のCGIが動かない~!!」
っということでした。
cgiといっても、perlで書いたモノもあり、Cで書いてmakeしたモノもあり。
すべてのcgiには"その他ユーザー"に実行権がついているし、pathも通っているし。
なんといっても、移転元のサーバ(Solaris→Redhat→Cobaltと移転したけれど、どこでも動いていたんだけどなぁ~...)
だから、パスの設定やパーミッションの設定の問題ではないと思っていたんです。
『きっと私のApacheの設定のどこかにミスがあるんだわ...』
でも、
「動くCGI」と「動かないCGI」があることに気付いたんです。
両者のどこが違うのか?
気付いてしまえば、なんてことはないのだけれど、わからないうちはいろいろ試してみましたよ~。
置き場所変えてみたり、ホストを変えてみたり。
やっと気付いた相違点が、パーミッションの設定(笑)。
動かなかったCGIには、groupにもwrite権がついていたんです。
こんな感じ↓
-rwxrwxr-x 1 www users 201 4月 16 2000 test.cgi
正しい姿は↓
-rwxr-xr-x 1 www users 201 4月 16 2000 test.cgi
グループに、write権なんていらないのわかっています。でも....
「大は小を兼ねる」と考えていたので、
まさかこれが原因で動かないとは思わなかったのです!
でも、今の環境では、グループにwrite権がついていると駄目です。エラーになります。
Apacheが厳しくなったのでしょうね。セキュリティの問題もあるし。
(といっても、ここは自前のサーバなのでグループといっても、全部「私」なので問題はないのですが..。)
修正方法ですが、下記のコマンドですべてのcgiのパーミッションを修正しました。
chmod g-w *.cgi
これで、動くようになりました。なんか、あっけないですねぇ~笑。
たったこれだけのコトがわからずにあっぷあっぷするなんて泣けてきます。
投稿者 megu : 2004年08月06日 12:56
