PaddieのCGIの部屋        Since 2000.04.28

ここではPaddieが作ったCGIスクリプトの紹介やCGI (Webサーバーの設定やPerl) について、わかる範囲で(笑)解説します。
〜Last Modified : 02 May.2000〜


 
アップロードとパーミション
通常、CGIのスクリプトファイルも普通のテキストファイルですから、ASCIIモードで転送すればOKです。

ただ、普通のテキストファイルと違うところは、「実行権限」が必要なんです。

つまり、システムから見ると、実行可能ファイルだということがわかるようにしておかないといけないんです。
といっても大して難しいことではありません。

通常、UNIX系のファイルシステムでは各ファイルやディレクトリごとに「パーミション」が設定されています。

パーミション」というのはわかりやすくいえば「アクセス権」のことで、権限は大まかにいうと3種類あります。

読み取り権限
 名前の通り、そのファイルを読みとることができるようになる権限です。
書き込み権限
 名前の通り、そのファイルに書き込むことができるようになる権限です。
実行権限
 名前の通り、そのファイルを実行することができるようになる権限です。
 (ディレクトリの場合は、そこに移動する権限)

さらに、何ができるかだけではなく、「誰が」というのも必要です。
それには「オーナー」「グループ」「その他」について設定があります。

オーナー
 そのファイルの所有者のことです。
グループ
 UNIXでは複数のユーザーをまとめて「グループ」を設定できます。
 そのグループに対する権限の設定をするのがこれです。
その他
 そのサーバーにアクセスできる人全てのことです。

オーナーとグループはファイルごとに設定が可能で、オーナーを変更するには次のコマンドを入力します。

chown 新しいオーナーのユーザーIDまたはユーザー名 対象ファイル名

グループを変更するには次のコマンドを入力します。

chgrp 新しいグループのグループIDまたはグループ名 対象ファイル名

ただし、これらはオーナー自身rootというスーパーユーザーにしかできません。

さて、実際のファイルのパーミションを見るにはどうすればいいのでしょうか?

まず、サーバーにTelnetして、ログインします。
そこで「ls -l」と打ってみて下さい。

drwxrwxrwx  1 hogehoge  hugahuga    1024 Apr 22 11:36 cgi-bin/
drwxrwxrwx  1 hogehoge  hugahuga    1024 Apr 22 09:27 images/
-rw-r--r--  1 hogehoge  hugahuga    2440 Apr 27 08:01 index.html
-rw-r--r--  1 hogehoge  hugahuga    2010 Apr 25 12:33 link.html

なんだかこんなのがでてきますよね(^^)
hogehogeがオーナー、hugahugaがグループです。

これの始めの部分「drwxrwxrwx」とか「-rw-r--r--」とかの部分の2文字目以降がパーミションです。
始めの一文字は、

d」ならディレクトリ
l」ならリンク(シンボリックリンクなど)
-」なら通常のファイル

と言う意味です。

その次の三文字がオーナーに与えられる権限です。

r」読み取り権限
w」書き込み権限
x」実行権限

この三種の設定の組み合わせはそれぞれ「ある/なし」がありますので、8通りあることがおわかりいただけると思います。
すなわち3ビットで表すことができますから、「r」「w」「x」それぞれに 「4」「2」「1」を当てることで数字(8進数)で表現することができます。
つまり、たとえば「r-x」なら4+1=5、 「rw-」なら4+2=6、 「r--」なら4という具合です。

あとは三文字ごとに「グループ」「その他」に対応しています。

これでパーミションの読み方はおわかりいただけたと思います。

さて、アップロードしたファイルのパーミションを変更するにはどうすればいいでしょうか?

実は簡単なんです。

chmod 755 count.cgi

とすれば「count.cgi」というファイルのパーミションが755rwxr-xr-x)に設定されます。

ところで、それぞれのファイルについてどのようにパーミションを設定したらいいのでしょうか。

CGIなどの実行ファイルには実行権限、 他のHTMLファイルなどには読み取り権限が必要ですが、 他のユーザーが勝手に変更したり削除してしまったりしたら大変ですから、設定は慎重に行わなくてはなりません。

といっても、普通は作成したファイルを編集するのは自分だけですので、 他の人に書き込み権限を与える必要はありません。

ただし、記録ファイルなどのようにCGI自体が書き換えたりする物もありますので、設定はなかなか難しそうです。

ですので、一般的には次のようにされるといいのではないかと思います。

普通のHTMLファイル : 644
CGIスクリプト  : 755
記録用のディレクトリ: 777
記録ファイル    : 666

ここまでパーミションの設定について書きましたが、TelnetしなくてもFTPクライアントでパーミションを変更できるものもあるようですので、 もしそういうFTPクライアントをお使いならいちいちコマンドを打ち込んだりする必要もなくなりますね(^^)

次に大事な話です。
UNIXでは「.」(ピリオド)で始まるファイルは隠しファイルなので、先ほどの「ls -l」コマンドでは見えません。

つまり「.htaccess」も見えないのです。これは困ります。

しかし、隠しファイルも全て表示する方法があります。

ls -la」です。

aが付いただけですが、これによって隠しファイルも全て表示されます。
ところで、「htaccess」という名前のファイルをサーバーの設定のところで作りましたよね??

これをそのままアップロードしても当然ファイル名が違うので「.htaccess」ファイルとしては機能してくれません

ファイル名の変更をしなければならないのです。

その方法は、「mv htaccess .htaccess」です。簡単ですね(^^)

サーバーの設定
CGIの部屋へ戻る
Perlってどう書くの?
 


Copyright 1999-2000 Paddie
私宛のメールは"paddie@paddie.com"まで。

// TOPページ  // 掲示板  // MEMOちゃ  // CGIの部屋 //