UNIXにおいてはパーミッションの設定が重要です。それはなぜでしょうか?また、設定の見方についても一緒に学んでいきましょう。
UNIXは、複数の人間が同じハードディスクを共有して使うことを前提として作成されたOSであるため、ファイルやディレクトリそれぞれに誰がどんな操作をできるかを設定することができます。
どうしてこの設定が必要なのでしょうか?
たとえば、サーバの管理者と、ホームページを見に来る見知らぬ人とが、両者とも自由にサーバの中にあるファイルの内容を書きかえられるとしましょう。
この場合、見知らぬ人は、ファイルに含まれる個人の情報を自由にできてしまいますね。
さらに、これが不特定多数の人にもできるとしたら、一体どうなるでしょう?
そこで、ファイルを勝手に書きかえられるのを防ぐために、ファイルの使用権の設定(許可)を行う必要があります。この使用権のことをパーミッションと言います。
パーミッションでは4種類の使用権を設定できます。
読み出し権(Read)、書き換え権(Write)、実行権(eXecute)、アクセス不可(-)の組の使用許可権です。
そして、設定対象者として、3組に分かれます。 所有者(User)、グループ(Group)、その他(Other)です。
これらの権利と設定対象者の組み合わせにより、ファイルの保護モードを設定できます。
それでは、実際にサーバにあるファイルを見てみましょう。-rwxr-xr--というような指定がついていると思います。
これは、最初の1文字目がディレクトリ、ファイル、シンボリックリンクのうちのどれかを示しています。
その後の文字列は、3文字ずつ3組になっています。各組がファイルに対する使用許可権を示し、それぞれ1組目が所有者(User)、2組目がグループ(Group)、3組目がその他(Other)のユーザを示します。
さらに各組の1文字目が読み出し権(Read)、2文字目が書き換え権(Write)、3文字目が実行権(eXecute)の有無を、示しています。
例 -rwxr-xr-- の場合:
所有者(User)には、
r …読み出し権(Read) w …書き換え権(Write) x …実行権(eXecute)
グループ(Group)には、
r …読み出し権(Read) x …実行権(eXecute)
その他(Other)には、
r …読み出し権(Read)
があることになります。
また、これらの使用許可権を表す方法に、オクタルモードがあります。
オクタルモードとは、それぞれのr(Read),w(Write),x(eXecute)に対して4,2,1を割り当て、3つの(User),(Group),(Other)の組を3桁で表現する表現方法です。
User Group Other
Read 400 40 4
Write 200 20 2
eXecute 100 10 1
例 -rwxr-xr-- の場合:
先ほどいったように、二文字目から計算すると、
-rwxr-xr-- = 400 + 200 + 100 + 40 + 0 + 10 + 4 + 0 + 0 = 754
と、なります。
ここでよく使うパーミッションの例を二つ上げておきます。
-rwx---r-x(705)
これは、CGIのプログラムなどにつけるファイルで、他人にも実行できる権利がついています。
一般的にブラウザなどからCGIプログラムにアクセスする場合は、たとえオーナーでも「他人」として扱われるため、この実行権をつける必要があります。
-rw----rw-(606)
これは、CGI等のプログラムから書き換える事の出来るファイルです。CGIのプログラムからのアクセスは、やはり「他人から」のアクセスとして認識されます。
よって、この書き換え権をつける必要があるのです。このパーミッションの変更を行うには普通、UNIXのコマンドラインでchmodというコマンドを用いて行います。また、パーミッションの変更の可能なFTPソフトもあります。
ただし、BIGLOBEの個人ホームページサーバでは、CGIプログラムは所有者(User)権限で動作するので、グループ(Group)やその他(Other)への実行権や書き込み権は必要ありません。
また、CGIプログラムとそのCGIプログラムが置かれているディレクトリに、グループ(Group)やその他(Other)への書き込み権が設定されていると、そのCGIでは、起動できずエラーとなります。
従って、グループ(Group)やその他(Other)の書き込み権はつけないでください。
なおCGIプログラムについて解説した優れた参考書としては、「はじめてのPerl」(ソフトバンク刊)や「CGIプログラミング入門」等をお薦めします。
|