CGI のパーミッションに関する一般的な情報と、「すぐ使えるCGI」の製品ファイルの設定について説明します。
パーミッションとは?
パーミッションというのは、ファイルの閲覧権限設定の事です。「子供には読ませない本」があったり「社外秘」の書類があったりするように、ファイルに対して誰が何をできるかの設定が「パーミッション」で、CGI等の設置中に必要な設定を行う事を「パーミッションを設定する」と表現します。
書類等に関して日常的な権限は「閲覧」と「書き込み」ですが、これに加えてデジタルファイルには「実行」の権限という設定があります。
サーバ環境による必要な設定のパターン
CGI のパーミッションの設定は使用するサーバ環境に合わせて変更する必要があり、サーバ環境には大きく分けて3つのパターンがあります。下記に例を挙げますが、お使いのサーバがどのタイプかは、サーバのマニュアル等の情報を調べて下さい。
タイプ1:CGI を「その他」のユーザで実行する設定のサーバ
「nobody」など、ファイルの所有者でないユーザとして CGI が実行されます。一般的な傾向としては、旧くからサービスを行っているレンタルサーバ会社や専用サーバに多い設定です。
このタイプのサーバの場合、CGI ファイルは「nobody/anyone が実行可能」に設定し、CGI が書き込みをするファイルやディレクトリは「nobody/anyone が書込み可能」に設定しておく必要があります。
タイプ2:CGI をファイルの所有者で実行する設定のサーバ
CGI をファイルの所有者、つまり、アップロード作業を行ったレンタルサーバのユーザで実行するサーバです。一般的な傾向としては、最近の共用レンタルサーバ会社に多い設定です。「suExec が設定してある」「suExec で稼動する」等の記載があればこのタイプです。
ファイルの所有者(通常は、レンタルサーバの利用ユーザ名)で CGI が実行されますので、CGIファイルには「所有者が実行可能」、CGI が書き込みをするファイルやディレクトリには「所有者が書込み可能」などの権限を設定する必要があります。なお、通常は、ファイル所有者は常に書き込み権限がありますので、設定作業上パーミッションの設定が必要になるのはCGIファイルだけになります。
また、このタイプのサーバの場合、「所有者以外のユーザに余計な権限があるとCGIが稼動しない」という設定がされている場合もありますので、他のユーザに対する余計な権限を付けない配慮が必要になります。
タイプ3:CGI をグループユーザで実行する設定のサーバ
CGI をファイルの所有者、つまり、アップロード作業を行ったレンタルサーバのユーザが所属するグループのユーザで実行するサーバです。一般的な傾向としては、VPSやLinux系の専用サーバに多い設定です。
仕組みとしては、レンタルサーバのユーザをWebサーバの実効ユーザと同じグループ(例えば apache)に入れておき、グループに対する権限を設定する事でパーミッションを管理します。サーバ上のファイルのグループ設定をこのグループにした上で(レンタルサーバだとファイルアップロード時に自動で設定されることが多いです)、CGIファイルには「グループが実行可能」、CGI が書き込みをするファイルやディレクトリには「グループが書込み可能」などの権限を設定する必要があります。
ファイルの種類と権限(UNIXの場合)
※ここからは、UNIX系のサーバについての説明です。Windowsサーバの場合は該当しません。
「書込み権限」など、言葉で表現する権限の指定と、実際に何が許可されるか関係について説明します。
UNIX系のサーバでは、パーミッションの設定は「読取り」「書込み」「実行」の3種類です。大体は日本語で意味するところで間違いはありませんが、ファイルに対しての権限とディレクトリ(フォルダ)に対する権限では少し意味合いが異なります。
ファイルの権限設定
ファイルの場合、権限は言葉で指定する通りです。「実行」が意味をなすのはCGIプログラムなどのプログラムファイルのみです(※)。
※Apache 2.x では、ファイルに関しては不要なこの「実行」権限設定情報を別の目的に使う場合があります。
ファイルの権限設定と許可される動作 | |
---|---|
権限 | 許可される動作 |
読取り | ファイルの内容を読む |
書込み | ファイルの内容を書き換える |
実行 | ファイルをプログラムとして実行する |
ファイルの権限設定の補足
- ファイルがまだ存在しない場合、ファイルを新規に書き出すにはその上のディレクトリへの書込み権限が必要です。
- ファイルを削除する場合も、その上のディレクトリへの書込み権限が必要です。
- ファイルを含む上位ディレクトリ全てに実行権限(詳細後述)が無いと、ファイル自体には読取権限があっても読取ができないサーバもあります。
ディレクトリ(フォルダ)の権限設定
ディレクトリ(フォルダ)の場合、権限設定の用語と与えられる権限の対応が少し日本語のニュアンスと異なり、「実行」はディレクトリ内部の閲覧を意味します。「入室する動作」というイメージです。
ディレクトリ(フォルダ)の権限設定と許可される動作 | |
---|---|
権限 | 許可される動作 |
読取り | ディレクトリ自体の詳細情報の取得権限 |
書込み | ディレクトリ内への書込み権限 |
実行 | ディレクトリ内のファイルの情報の取得権限 |
製品ディレクトリ・ファイルのパーミッション設定例(UNIXの場合)
製品のパーミッションの設定例を下記に示します。この他にも設定のバリエーションがありますので、詳細はサーバ会社の説明書等を確認して下さい。
※製品によっては、下表に含まれるファイルやディレクトリが無い場合もあります。
「すぐ使えるCMS」(旧「すぐ使えるCGI」)の場合
ファイル/ディレクトリ | 権限指定 | 設定する権限 | |||||
---|---|---|---|---|---|---|---|
タイプ1の サーバの場合 |
タイプ2の サーバの場合 |
タイプ3の サーバの場合 |
|||||
admin/ | 読取(・実行) | 755 | rwxr-xr-x | 755 | rwxr-xr-x | 755 | rwxr-xr-x |
admin/admin.cgi | 読取・実行 | 705 | rwx---r-x | 700 | rwx------ | 750 | rwxr-x--- |
data/ | 読取・書込み(・実行) | 707 | rwx---rwx | 700 | rwx------ | 770 | rwxrwx--- |
license.dat | 読取・書込み | 646 | rw-r--rw- | 600 | rw------- | 664 | rw-rw-r-- |
templates/ | 読取(・実行) | 755 | rwxr-xr-x | 700 | rwx------ | 755 | rwxr-xr-x |
admin/ | 読取(・実行) | 755 | rwxr-xr-x | 700 | rwx------ | 755 | rwxr-xr-x |
*.* | 読取 | 644 | rw-r--r-- | 600 | rw------- | 644 | rw-r--r-- |
article/ | 読取(・実行) | 755 | rwxr-xr-x | 700 | rwx------ | 755 | rwxr-xr-x |
*.* | 読取 | 644 | rw-r--r-- | 600 | rw------- | 644 | rw-r--r-- |
webdir/ | 読取・書込み(・実行) | 757 | rwxr-xrwx | 755 | rwxr-xr-x | 775 | rwxrwxr-x |
tempfiles/ | 読取・書込み(・実行) | 757 | rwxr-xrwx | 755 | rwxr-xr-x | 775 | rwxrwxr-x |
「すぐ使えるメールフォーム」の場合
ファイル/ディレクトリ | 権限指定 | 設定する権限 | |||||
---|---|---|---|---|---|---|---|
タイプ1の サーバの場合 |
タイプ2の サーバの場合 |
タイプ3の サーバの場合 |
|||||
admin/ contact/ |
読取(・実行) | 755 | rwxr-xr-x | 755 | rwxr-xr-x | 755 | rwxr-xr-x |
admin/*.cgi contact/index.cgi |
読取・実行 | 705 | rwx---r-x | 700 | rwx------ | 750 | rwxr-x--- |
data/ | 読取・書込み(・実行) | 707 | rwx---rwx | 700 | rwx------ | 770 | rwxrwx--- |
license.dat | 読取・書込み | 646 | rw-r--rw- | 600 | rw------- | 664 | rw-rw-r-- |
templates/ | 読取(・実行) | 755 | rwxr-xr-x | 700 | rwx------ | 755 | rwxr-xr-x |
*.* | 読取 | 644 | rw-r--r-- | 600 | rw------- | 644 | rw-r--r-- |