• ベストアンサー

perl使用のCGIでのデータファイルの取り扱いについて

こんにちは、 perlでCGIを動かしているんですが 掲示板やアクセスログなどのデータファイルの置き場所についてこまっています perlのopen関数などでファイルを開くことはできても、直接URLを指定すれば 見ることができてしまいまます。 内部の実行からは読み書きできて、直接URLを指定したら、アクセス拒否にする というパーミッションの設定or.htaccessなどの設定方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • estea
  • ベストアンサー率44% (39/87)
回答No.3

えっと、パーミッションは 606 で良いはずです。 一般的な場合として apache を見ますと、apache は各プロセスを指定のユーザ 権限で実行します。nobody や www といった名前を持つものだったりしますが これは、一般のユーザではないです。で、660 がいけない理由ですが、 CGIの実行権限はステッキービットなどがセットされない限りは other 権限。 つまり最後の部分です。よって、 705 のCGIファイルを実行すると 660 ファイルは 読み込めません。other 権限では パーミッションは 0 であるからです。 でぇ、アクセスの制限で一般的なのは、プロバのユーザの場合、 public_html のような公開用ディレクトリと同じ位置に置けば(普通はpublic_html以下)、 アクセスできません。(CGIからは覗けます。) .htaccess も良い方法です。設定例も結構あるので検索すれば普通に出ますよね。

その他の回答 (2)

  • noopee
  • ベストアンサー率38% (114/297)
回答No.2

こんにちは。 データファイルの置き場所を別のディレクトリにし、そのディレクトリに.htaccessでアクセス制限をかけます。 これで直接指定しても見えないはずなんですが。

noname#227796
noname#227796
回答No.1

データファイル等をアップロードしたとき、通常、パーミションは「666」になっていると思います。 これを、「660」にすれば良いでしょう。 サーバによって設定が違いますけど、通常は660にしますね。 もしくは、アクセスログやデータファイルの拡張子を「.cgi」とかにすることで、サーバにCGIの実行ファイルだと思わせ、実行に失敗させる手も使えるかもしれません。(^^;

関連するQ&A