Linux Fedora Core4・パーミッション
パーミッションとは、言葉どおり許可を与えることです。HTMLファイルのようにホームページ訪問者が見ることだけを許可されたものや、CGIプログラムのように実行させて結果を見てもらうプログラムでは、その設定はことなります。
ここでは、CGIを設置する際に必ず必要となるパーミッションについて解説します。
パーミッションとは?
ほとんどのサーバーコンピューターはUNIXというOSで作動しています。もともとUNIXはネットワークで複数のユーザーにアクセスされることを前提に開発されています。
皆さんのパソコンにも、多くの人に見てもらいたいものと、他人には見せたくないものがあるのではないかと思います。サーバーもこれと同じで、たくさんのファイルの中には「見ることだけ許可したい」「見ることと書き込むことは許可したい」「実行させて結果を見てもらいたい」などいろいろな種類があります。
このアクセス権限をパーミッションといいます。
パーミッションは大きく次の3つのグループに分かれています。
1.オーナー(あなた、ファイルの持ち主)
2.グループ(ネットワークのグループ)
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
= (実行)
■HTMLドキュメントのパーミッション---->644
通常のHTMLドキュメントは「644」に設定されています。これは、オーナー(管理者)書き込み読み込みが可能で、他のユーザーは読み込みだけが可能という意味です。
オーナーが「6」、グループは「4」、一般が「4」ということは、オーナーが「rw=4+2=6」で読み込みと書き込みを許可、グループと一般が「r=4」で読み込みだけを許可していることになります。オーナーは更新や、メンテナンスのために書き込みを許可しておく必要があるからです。
■CGIの派ミッション---->755
CGIはプログラムですから実行させる必要があります。
■オーナーの場合
まず、オーナーから考えて見ましょう。オーナーもファイルを見ることがありますから「r」フラグを立てます。当然オーナーはメンテナンスのために書き込みを許可する必要があるので「w」フラグも必要ですね。実行結果を見る必要もありますから「x」フラグを立てる必要もあります。したがって、オーナーのパーミッションは次の計算式で算出します。
| rws = 4+2+1 =7 |
■グループと一般の場合
次はグループと一般です。グループと一般のユーザーにプログラムファイル(スクリプト)を書き換えられたら大変です。「w」フラグは許可しないようにします。
次の計算式で算出します。
| rx = 4+1 = 5 |
したがってCGIのパーミッションは「755」になるのです。
★COLUM・・・・・・・・>グループのパーミッションは必要か?
一般的なプロバイダを介して接続している場合はグループは必要ありません。真ん中を省略して「0」にすることも可能です。
だだし、プロバイダによっては省略できないところもあるようです。
その場合は、「644」「755」に設定しておいた方が無難です。
グループのパーミッションの設定
| パーミッション | HTML | CGI |
| 省略化 | 604 | 705 |
| 省略不可 | 644 | 755 |
■CGIが使用するデータファイル-------->666
このファイルはオーナーも訪問者もみんな同じ使い方(CGIを介して読み書き)をしますので、設定も同じになります。
掲示板などのCGIが使用するデータファイルは、訪問者の投稿を書き込む必要がありますので「w」フラグと、当然ログを見る必要もありますから「r」フラグが必要です。
したがって、パーミッションは次のようになります。
| rw = 4+2 =6 |
結果は、「666」になります。なお、CGIが自動で作成するデータファイルは、パーミッションの設定をスクリプト内で自動で行っています。
■訪問者の書き込みを禁止するデータファイル------->644
CGIが使用するファイルでも訪問者に投稿を許可しないデータもあります。
たとえば、投稿された記事に自動で返信を付けたり、書き込みを辞書に基づいて変更する場合などの「辞書ファイル」がこれに該当します。
これはオーナーだけが更新すればいいのですから訪問者の書き込みは禁止して「644」になります。
■CGIが動作するディレクトリのパーミッション----------->777
最近では、データファイルのバッティング(同時書き込み)によるログの消失をふせぐため「ロックファイル」が使用されます。中には一時作業用のテンポラリファイルを使用して強力にロックしているCGIもあります。
このようなロックシステムは、書き込みが開始される際に、ダミーのファイルを生成して「書き込み中です」と他のプロセスに知らせ、他のプロセスはこのダミーファイルが無くなるのを待って書き込みを開始するのです。
UNIXのパーミッションという考え方はこのディレクトリにも配慮されています。現存するファイルは「644」のように書込み禁止していれば大丈夫ですが、知らない訪問者が勝手にディレクトリ内にファイルを作成すれば書き込みも自由です。これを防いでいるのがディレクトリのパーミッションです。
★セキュリティーは大丈夫か?
ロックシステムは、訪問者がダミーファイルを作成したり、テンポラリファイルを作成することを許可しなければ実現できません。オーナーをはじめ、すべての訪問者に読み込み、書き込み、実行を許可(rwx=7)するのは、セキュリティ上多少問題があることは事実です。
しかし、ディレクトリ事態が動作する訳ではなく、CGIが操作しているのですからCGIに問題がなければそれほど心配する必要はありません。
★COLUMN・・・・・・・・・・・・>CGIは命取り?
といってもあなたの命をとる訳ではありませんが、前述のとおり、CGIは、あなたのパソコンではなく、サーバーで実行されます。十分バグ取り(エラー削除)されていないスクリプトを実行したり、あいまいな知識で作成したスクリプトを実行させるとサーバーがハングアップ(暴走)することもありえます。あなたは、あなたの加入しているプロバイダの数万、数十万の会員に迷惑をかけることになるのです。・・・・・・・・・・責任が取れますか?
よって、完成していないスクリプトをテストするなどはもってのほかです。
★結果発表
| ファイル名 | 種類 | 転送モード | パーミッション |
| xxxxx.cgi | スクリプト | アスキー | 755 |
| xxxxx.txt | データ用 | アスキー | 666 |
| xxxxx.gif | トップページに戻るための画像 | バイナリ | 644 |
| xxxxx.htm | CGI呼び出しよう定義ファイル | アスキー | 644 |
| jcode.pl | 日本語変換ライブラリ | アスキー | 755 |
| cgi-bin | CGI設置用ディレクトリ | ― | 777 |
| copy right kansai-syoji,.co all right reserved Web-Master masashi ouchi http://kansai.homelinux.com/~Linux |