パーミッションの設定

パーミッションを変更する必要があるファイル・フォルダ

変更しないと動かない

  • htmldwarf.cgi [705] --- 本体(CGI実行ファイル)。

ほとんどの場合変更が必要

  • config.cgi [606] --- 設定ファイル。
  • sessionフォルダ [707] --- セッションデータを保存したフォルダ。(moduleフォルダ内)
  • novelフォルダ [707] --- 作成したファイルを保存するフォルダ。
  • templateフォルダ [707] --- テンプレートを保存するフォルダ。
  • indexフォルダ [707] --- 目次用テンプレートを保存するフォルダ。(templateフォルダ内)
  • imageフォルダ [707] --- 画像を保存するフォルダ。

そこまで重要ではないが変更したほうがより安全

  • 拡張子がplかpmのファイル [604] --- ライブラリとモジュール。

suEXEC / cgiWrap

「suEXEC」や「cgiWrap」が採用されているサーバーでは、CGIを「オーナー権限」(「ユーザー権限」)で実行することが出来るので、より安全なパーミッション設定ができます。
ご利用のサーバーが「suEXEC」や「cgiWrap」を採用している場合はパーミッションを以下のように変更することをおすすめします。

  • [705]にしたファイル -> [700]
  • [604][606]にしたファイル -> [600]
  • [707]にしたフォルダ-> [701]
  • 他人に見られたくないデータしか入っていないフォルダ-> [700]
    ※HTMLや画像など、ブラウザから呼び出すファイルは、フォルダを700にすると見られなくなります。

特に、CGI本体(htmldwarf.cgi)と設定ファイル(config.cgi)は変更したほうが良いです。できればライブラリとモジュール(拡張子がplかpm)も600にしておくと良いでしょう。
また、707にしたフォルダも701のほうがより安全ですが、HTML DWARFの場合はconfig.cgi以外に読まれてまずいファイルはないので、初期設定(普通にフォルダを作ったとき)の705でもかまいません。

ご利用のサーバーが「suEXEC」や「cgiWrap」を採用しているかどうかを調べるには、てきとうなCGIのパーミッションを700にして動かしてみるのが手っ取り早いです。動けば採用、動かなければ採用していません。

サーバーとCGI配布元でパーミッションの数字が違う

CGI配布元の指定はあくまでも「一般的なサーバーで問題なく動くだろう数字」ですので、ややゆるめに書いているところが多いようです。基本的に、サーバーの指定に合わせてください。
特に、配布元よりサーバーの指定する指定が小さい場合は、必ずサーバーの指定するパーミッションに設定しましょう。 逆に、配布元の指定した数字のほうが小さい場合は、その指定では動かない場合もあるので要注意です。(まれに動いちゃう場合があります)

ちょっとした解説

数字の意味

ファイルの100の位が7
ファイルのオーナーに読み書き実行の権限を与えます。直接実行するCGI(ブラウザにファイル名が表示されるCGI)は、実行権限がないと動きません。(実行権限だけなら1ですが、オーナーに読み書き権限がないとFTPで操作することも出来ないので、読み書き実行の全てを許可する7になります)
10の位がゼロ
10の位は「グループ」(同じサーバーを使っている全員)に与える権限。ここをゼロ以外にすると、同じサーバーを使っている人間に悪意と技術があった場合に、ファイルを読まれたり書き換えられたりする危険性があります。可能な限りゼロにしましょう。*1
1の位がゼロ
nobodyに権限を与えません。ブラウザから見た場合は「nobody」からアクセスしていることになるので、1の位がゼロのファイルは、ブラウザにアドレスを入れてアクセスしても中身を表示しません。フォルダの場合は、そのフォルダ内のファイル全てをブラウザに表示しないし、index.htmlを置いてなくてもファイルのリストを見せません。
したがって、パスワード、設定情報、メールのログなど、他人に見られたくないファイルは、パーミッションの1の位をゼロにすると安全です。
ただし、suEXECやcgiWrapを使っていないサーバーでは、nobodyにも権限を与えないとCGIからデータファイルやライブラリを利用できないので、1の位をゼロにしてはいけません。
※CGIなど、動的ファイルの場合では、「ファイルの中身を読む」のではなく「ファイルを実行して結果を表示」という処理になるので、拡張子に関わらず中身は表示されません。
フォルダのパーミッション777
フォルダ内のファイルをCGIから書き換えたり、新たにファイルを作成したりするためには、フォルダに読み書き実行の権限が必要です。読み書き実行=7なので、ロックファイルやログファイルなどを入れるフォルダは「777」が指定されることが多いのです。しかし実際は10の位(グループ)には権限がいらない場合がほとんどなので「707」でも動くのです。
また、「suEXEC」「cgiWrap」を採用しているサーバーでは、逆に「777」を権限を与えすぎて危険な指定とみなすので、CGIやCGIを入れたフォルダのパーミッションが「777」だとエラーになります。
パーミッション000
権限なし。そのファイルに対して誰も何もできません。(FTPソフトからパーミッションを再び変更することだけは可能)

「suEXEC」「cgiWrap」が動いていないサーバーでの安全対策

見せたくないファイルをブラウザからアクセスできない場所に置く
「ホームページのデータはpublic_html以下に置いてください」など、FTPソフトでアクセスできるフォルダのうち、ホームページのデータを置くフォルダとそれ以外のフォルダに別れているサーバーもあります。このようなサーバーなら、public_htmlの外にフォルダを作って、見せたくないファイルはそこに置きましょう。CGIからそのファイルへのパスが変わりますので忘れず変更してください。
見せたくないファイルの拡張子をcgiにする
拡張子がcgiになっていると、ブラウザからそのファイルにアクセスした際、ファイルを「読む」のではなく「実行」してその結果を表示しようとします。(もちろんCGIの使えるフォルダに置いてある場合に限る)しかし、もちろんCGIとして作成されたファイルではないので、ブラウザにはエラーが出ます。
このため、HTML Dwarfでは4.00から設定ファイルの拡張子をcgiに変更しています。
.htaccessで特定の拡張子をアクセス禁止
.htaccessというファイルにコマンドを書き込んでサーバーに置くことで、特定の拡張子のファイルにブラウザからアクセスできないようにすることが出来ます。見せたくないファイルの拡張子を変えられない場合におすすめです。.htaccessの書き方についてはWebにたくさん情報があるので検索してみましょう。なお、サーバーによっては.htaccessを置くのを禁止している場合があります。
ファイル名を変え、フォルダには必ずindex.htmlを入れる
フリー配布されているCGIの場合、設定ファイルやログファイルの名前が簡単に調べられてしまいます。ブラウザから直接アクセスされにくくするためには、ファイル名を変えるのもひとつの手です。
ただしファイル名を変えるだけだとCGIから呼び出せなくなるので、CGI内を検索してファイル名を書き換える必要があります。
また、せっかく名前を変えてもindex.htmlがないとフォルダ内のファイルがすべて丸見えになる場合があるので、必ず全てのフォルダにindex.htmlを入れるようにしましょう。(名前がindex.htmlなら中は白紙で構いません)
サーバー引越しを検討/サーバー会社に直訴(笑)
どうしてもセキュリティに不安があるなら、いっそのことサーバー引越しも考えてみましょう。
実は、直訴もなかなか有効です。特に有料のサーバーでは、直接お願いすれば自分の使っているサーバーの設定を変更してもらえる可能性はけっこう高いです。もちろん、妥当性のある要求に限りますが。
他にも、直接たずねてみると、解説ページが古いだけで実は〜とか、一般には公開してないけど実は〜というような話が聞ける場合もあります。ラッキーと思いつつちょっと微妙な気分になります。
最終更新:2016-12-19 (月) 16:25:20

*1 一部のサーバーでは、グループにも権限を与えないと動かないことがあります

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-12-19 (月) 16:25:20 (275d)