Windowsではファイルの拡張子(.exeなど)によって、そのファイルが実行可能か不可能かが決まりますが、UNIXではパーミッション(あるいはファイルのモード)と呼ばれる特別な属性によって実行可能・不可能が決まります。UNIXサーバーでCGIスクリプトを実行可能にする場合はパーミッションを変更する必要があります。(Windowsの場合はパーミッションを変更する必要はありません。)
パーミッションは rwxr-xr-x などの9文字の文字列や、755 などの数値で表します。9文字の文字列は r(readable), w(writable), x(executable), ハイフン(-)からなり、それぞれ次の意味をもちます。
r オーナーが読込可能なら r、さもなくば -。 w オーナーが書込可能なら w、さもなくば -。 x オーナーが実行可能なら x、さもなくば -。 r グループメンバが読込可能なら r、さもなくば -。 w グループメンバが書込可能なら w、さもなくば -。 x グループメンバが実行可能なら x、さもなくば -。 r その他の人が読込可能なら r、さもなくば -。 w その他の人が書込可能なら w、さもなくば -。 x その他の人が実行可能なら x、さもなくば -。
パーミッションを数値で表す場合は r=4、w=2、x=1 を割り当て、3文字ずつの合計を用います。例えば、rwxr-xr-x は、4+2+1, 4+1, 4+1 で、755 となります。
パーミッションはディレクトリ(フォルダ)に対しても指定可能で、その場合、x は実行可能ではなく、そのディレクトリの下に移動できるかどうかを表す文字となります。
よく使用されるパーミッションのパターンは次の通りです。
パーミッション | 意味 |
---|---|
644 rw-r--r-- |
通常のHTMLファイルなど。自分は読み込み、書き込みができるが、グループメンバや他人は読み込みしかできない。 |
666 rw-rw-rw- |
CGIスクリプトが書き込むファイルなど。自分もグループメンバも他人も、読み込みと書き込みができる。 |
755 rwxr-xr-x |
通常のディレクトリ、コマンド、CGIスクリプトなど。誰でも読込みと実行はできるが、書き込みは自分だけ。 |
777 rwxrwxrwx |
CGIスクリプトがファイルを作成するためのディレクトリなど。誰でもなんでもOK。セキュリティ上は少々危険。 |
CGIスクリプトはCGIを設置した人の権限ではなく、nobodyなど第三者(その他の人)の権限で動くため、666 や 777 などその他の人の書き込み権を含めたパーミッションを設定してやる必要があります。
ただし、最近の BIGLOBE などのように、CGIスクリプトがCGIを設置した人の権限で動作するように設定されているプロバイダも増えてきました。この場合は、666の代わりに644(もしくは600)、777の代わりに755(もしくは700)とした方が、よりセキュリティ面で安心ができます。(1998.12.20追記)
サーバーにTELNETでログインしている場合は、コマンドラインから次のようなコマンドを入力してください。パーミッションは数値形式で指定します。
chmod 755 ファイル名
テキストベースのFTP(FTP.EXEなど)を使用している場合は、FTPのコマンドラインから次のように実行してください。(この方法がサポートされていない場合もあります。)
quote site chmod 755 ファイル名
転送先のファイルをマウスで右クリックして、ポップアップメニューから[属性変更]で変更します。わかり易いし、簡単なので一番オススメ。
ファイルの存在するディレクトリに移動して、[ツール]-[サーバーへコマンド]または[Tools]-[Quote]で、「site chmod 755 ファイル名」を入力して[OK]します。
ファイルを選択(複数可)し、右クリックのポップアップメニューから[chmod(UNIX)]のチェックボックスで指定して[OK]します。
[Remote]-[Set Permissions]で変更します。
その他パーミッションの変更については、プロバイダにメールでお願いしなくてはならないなど、様々ですので、分からない場合はプロバイダやサーバーの管理者にお問い合わせください。