CGIで指定するパーミッションについて
CGIプログラム設置に際しては、パーミッション指定が必要です。
これについて記しておきます。
UNIX系OSでは、複数の利用者が同時にコンピューターにアクセスして、
複数の操作を同時に独立して実行できるように設計されています。(マルチユーザー&マルチタスク処理)

サーバー(server)と云うのは、サービスの提供者・給仕人と云う意味ですが、
どのようなアクセスをどのように処理するか、その割り振りを行う装置です。

コンピューターが、会社のビルだとすると、会社にやってきた人をどの部署の誰のところに連れていくか
その案内をするのがサーバーの仕事です。
たとえ会社の社員であっても、案内者の指示がなければ自分の席に着くことが出来ません。
サーバーにどの様な仕事をさせるかを決めることが出来るのは一人だけ、つまり社長だけです。

ある人が会社を訪れ、資料がみたいと申し出たとします。
サーバーはその人を図書室に連れていき、閲覧用の席に着くように案内します。
図書室では自由に閲覧できる資料は開架されていますが、
特定の人しか閲覧できない資料は書庫に保管されています。

書庫から本を取りだしてくるのはサーバーの仕事です。
例え同じ会社の社員でも、他の部署の極秘資料を勝手に見ることは出来ません。
サーバーが資料に記されている、誰ならば見せても良いという、記述を確認してから、
希望者に届けます。

この個々の資料に記された許可の記述が、パーミッションに当たります。
パーミッションはファイルやディレクトリに属性として与えられ、ファイル属性とか、ディレクトリ属性と云います。

属性の基本要素は次の4つです。
「読む」 「書く」 「実行する」 「指定無し」
それぞれついて、記号と数値が決められています。
読む r (read) 4
書く w (write) 2
実行する x 1
指定無し - 0

実行すると云うのは、プログラムファイルを実行するとか、ファイルの削除を実行する等という意味です。

属性はこれらの組合せで決められます。
読むことだけが出来る r-- 4+0+0=4
読むこと・書くことが出来る rw- 4+2+0=6
読むこと・実行する事が出来る r-x 4+0+1=5
読むこと。書くこと・実行することが出来る rwx 4+2+1=7


属性は、ファイルの所有者(作成者)、グループ、その他の人、に対して個別に指定されています。
グループというのは、例えば会社のある部署全員(working group)のことです。

ディレクトリ
ディレクトリと云うのは、HDDの中では、あるファイルの集合を記述した特殊なファイルです。
ファイルであることに違いはありませんから、普通のファイルと区別するために、
特別な属性の指定を行います。
ディレクトリ d
ファイル -
---------------------------------------------------------------------
さて、あるファイルに対してどういう扱いが出来るかと云うことは、以上のことを利用して、
サーバーに知らせます。
「ファイルの種類」+「所有者の権限」+「グループの権限」+「その他の人の権限」
ファイルの種類 区別 所有者 グループ その他 記号表示 数値表示
html - rw-(6) r--(4) r--(4) -rw-r--r-- 644
cgi - rwx(7) r-x(5) r-x(5) -rwxr-xr-x 755
dat - rw-(6) rw-(6) rw-(6) -rw-rw-rw- 666
ディレクトリ d rwx(7) r-x(5) r-x(5) drwxr-xr-x 755
通常良く用いる指定は、上記のようなものです。
cgiプログラムの設置案内などでよく見る数値表示の意味を、これで理解しておいてください。
セキュリティ対策
パーミッションの指定は、慎重に行う必要があります。
指定を間違えると、プログラムを書き換えられたり、誤動作したりするからです。

★グループ指定と云うのは、インターネットへの公開ファイルではあまり意味を持ちません。
従って、上記の場合でも、グループの権限指定を0にしておくと、セキュリティが上がります。

以下のようにパーミッション指定を変更して、変わりなく動作するようであれば、セキュリティ対策になります。
html 644 604
cgi 755 705
dat 666 606
ディレクトリ 755 705


★パーミッション777
時折、この様な属性指定をするように解説しているところがありますが、
上記の意味から解るように777は非常に危険な指定です。
誰でもファイルの書き換えや削除さえも出来るからです。
755又は、705指定に変えるべきです。

★index.html
cgiプログラムを置いているディレクトリには、必ず、index.html という名前のファイルを置いておくようにします。
内容は何でも構いません。
これがない場合、ディレクトリー内部のファイルを全て読みとられてしまいます。