- ベストアンサー
パーミッションについて
perlで作成されたcgiプログラムを修正しているのですが、 不明な点があるので教えてください。 apacheの実行アカウント:nobody test.csvファイルのユーザ、グループ:user1.user1 test.csvファイルのパーミッション:644 下記のようなプログラムで、テキストボックスに入力した文字を "test.csv"ファイルに保存しようと思うのですが、そのままでは 権限がないので保存できません。 open(OUT,">test.csv") test.csvのパーミッションを、646などにすれば保存できるのですが ちょっとセキュリティ的に問題があるような気がします。 安全にファイルを保存するには上記のような方法がベストなのでしょうか? 他に推奨される方法があれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どのようなサーバーか判りませんが、データファイルのパーミッションは604など、特に必要がなければ「グループ」に権限を与えない方が安全です。たとえば共有サーバーを借りている場合など。 また、DocumentRootつまりインターネット上に公開されるエリアにデータファイルを保存しない方がいいです。たとえば公開されるエリアが home/user/public_html 以下である場合、データファイルなど、スクリプトがアクセスするだけでファイル自体を公開する必要がなければ、 home/user/bbs_data/test.csv などに保存します。
その他の回答 (2)
- flowermaze
- ベストアンサー率56% (159/282)
・サーバー設定も変えられない、 ・Webに公開されていないフォルダを利用できない ・test.csvの拡張子は変更不可 ということでしたら、ユーザーの書き込み権限は必要ですね…… せめてもの対策として、.htaccessを使って拡張子csvをブラウザから見られないようにブロックするのをおすすめします。
ブラウザからCGIを動かす場合、通常は nobody での実行となりますので、残念ながら1の位は必ず6でなければいけません。 その代わり、拡張子を .cgi にすることで、中身を第三者が直接見えなくすることはできます。