|
パーミッションてな〜に |
- パーミッションとは?
もともとUNIXはネットワークで多くの方々にアクセスされる事を前提に開発されています。
皆さんのパソコンにも、多くの方に見てもらいたいものと、見せたくない物が有ると思います。
サーバも同じで、沢山のファイルの中には、見る事だけ許可したい、見ることと書き込むことは許可したい、
実行させて結果を見てもらいたいなどといろいろあります。このアクセス権限をパーミッションといいます。
パーミッションは大きく3つのグループに別れています。
○ オーナー(あなた、ファイルの持ち主です)
○ グループ(ネットワークのグループ)
○ それ以外(一般) それぞれ3ビットで現されます。
オーナー |
グループ |
それ以外 |
読み込み |
書き込み |
実行 |
読み込み |
書き込み |
実行 |
読み込み |
書き込み |
実行 |
r |
w |
x |
r |
w |
x |
r |
w |
x |
4 |
2 |
1 |
4 |
2 |
1 |
4 |
2 |
1 |
|
※ r = read, w = write, x = execute
で合計を計算して設定します。
通常のHTMLドキュメントは「644」ですから
オーナーが「6」、グループは「4」、一般が「4」という事は、
オーナーが「rw = 4+2 = 6」で読み込みと書き込みを許可、グループと一般が「r = 4」で
読み込みだけを許可していることになります。
オーナーは更新や、メンテナンスの為書き込みを許可しておく必要があるからです。
一般的なプロバイダを介して接続している場合はグループは必要ありませんので
まん中を省略「0」して設定する事もできますが、プロバイダによっては省略出来ない
ところもあるようです。「644 = 604、755 = 705」
- CGIのパーミッション「755」
CGIはプログラムですから実行させる必要があります。
オーナーから考えてみましょう。
オーナーもファイルを見ることはありますから「r」フラグを立てます。
当然オーナーはメンテナンスの為書き込みを許可する必要があるので「w」も必要ですね。
実行結果を見る必要もありますから「x」フラグを立てる必要もあります。
したがって「rwx = 4+2+1 = 7」で「7」ということになります。
次はグループと一般です。
グループと一般の方々には、プログラムファイル(スクリプト)を書き換えられるのは
面白くありませんから「w」フラグだけは許可しませんので「rx = 4+1 = 5」で「5」となります。
したがってCGIのパーミッションは「755」になるのです。
- CGIが使用するデータファイル「666」
このファイルはオーナーも訪問者もみんな同じ使い方(CGIを介して読み書き)をしますので、設定も同じになります。
掲示板などのCGIが使用するデータファイルは、訪問者の投稿を書き込む必要がありますので「w」と、
当然ログを見る必要もありますから「r」が必要です。
したがって「rw = 4+2 = 6」で「666」になります。
(CGIが自動で作成したデータファイルはこれも自動で行っています)
CGIが使用するファイルでも訪問者に投稿を許可しないデータもあります。
たとえば、投稿された記事に自動で返信を付けたり、書き込みを辞書に基づいて変更する場合などの
辞書ファイルですね。
これはオーナーだけが更新すればいいのですから訪問者の書き込みは禁止して「644」になります。
- CGIが動作するディレクトリのパーミッション「777」
最近では、データファイルのバッティング(同時書きこみ)によるログの消失を防ぐためロックシステムが
使用されています。中にはテンポラリファイルを使用してより強力にロックしている物もあります。
このようなロックシステムは、書き込みが開始される時、ダミーのファイルを作製して「書き込み中です」と
他のプロセスに知らせ、他のプロセスはこのダミーファイルが無くなるのを待って書き込みを開始するのです。
UNIXのパーミッションという考え方はこのディレクトリにも配慮されています。
現存するファイルは「644」のように書き込みを禁止していれば大丈夫ですが、
知らない訪問者が勝手にディレクトリ内にファイルを作製すれば書き込みも自由です。
これを防いでいるのがディレクトリのパーミッションです。
ロックシステムは、訪問者がダミーファイルを作製したり、テンポラリーファイルを作成する事を許可しなければ
実現出来ません。
オーナーをはじめ、すべての訪問者に読み込み、書き込み、実行を許可「rwx = 7」するのは、セキュリティー上
多少問題が有る事は事実ですが、ディレクトリ事態が動作する訳ではなく、CGIが操作しているのですから
CGIに問題が無ければそれほど心配する必要はありません。
サーバによってはディレクトリのパーミッションが755でなければ動作しない場合があります。
ディレクトリのパーミッションを777に設定して、CGIが「サーバエラー」になる場合は755に設定してください。
|
|
|