≫パーミッションとは
パーミッションとは、直訳すれば「許可」。
UNIXなどのファイル操作でパーミッションと言えば、ファイルを扱える「権限」を指す。
UNIXなどネットワークサーバ系のOSはひとりだけで使うものではない。したがって、ファイルごとに読み・書き・実行の権限が設定できるようになっている。その設定をパーミッションと言う。
UNIXなどのファイル操作でパーミッションと言えば、ファイルを扱える「権限」を指す。
UNIXなどネットワークサーバ系のOSはひとりだけで使うものではない。したがって、ファイルごとに読み・書き・実行の権限が設定できるようになっている。その設定をパーミッションと言う。
≫オーナーとかグループとかユーザについて
ファイルには所有者がいます。ファイルを作った人、もしくは、所有者として設定された人。
そのファイルの所有者自身をオーナーと言います。
同じグループのユーザーはグループ属性のパーミッションが適用されます。
ファイルの所有者でもなければ、グループでもない第三者をユーザと言います。
この3つのユーザに適切なパーミッションを設定することが大切です。
ディレクトリに関してもファイルと同様です。
そのファイルの所有者自身をオーナーと言います。
同じグループのユーザーはグループ属性のパーミッションが適用されます。
ファイルの所有者でもなければ、グループでもない第三者をユーザと言います。
この3つのユーザに適切なパーミッションを設定することが大切です。
ディレクトリに関してもファイルと同様です。
≫パーミッションの見方
それぞれのファイルに設定されているパーミッションを確かめるにはFTPソフトやTelnet(SSH)を使用します。
これらは、先頭一文字と、後ろの3文字ずつがそれぞれ意味をもっています。
各文字の意味は以下の通り。
「drwxr-xr-x」は、ディレクトリであり、オーナーには読み書き実行を許可し、グループとユーザには読み取りと実行を許可するというパーミッション設定です。グループとユーザには書き込みの権限はありません。
「-rw-r--r--」は、ファイルであり、オーナーには読み書きの権限があり、グループとユーザには読み込みのみ権限が与えられている設定です。
ディレクトリかファイルかを示す先頭1文字はソフトによって省略されることがあります。
ディレクトリかファイルかという部分を除いた下9桁を数字で表現することがあります。いわゆる八進数を使います。
属性にそれぞれ r = 4、w = 2、x = 1 という数字をあてはめます。不許可 = 0 です。
「rwxr-xr-x」なら
オーナー権限部分「rwx」==> 4 + 2 + 1 = 7
グループ権限部分「r-x」==> 4 + 0 + 1 = 5
ユーザ権限部分「r-x」==> 4 + 0 + 1 = 5
となり、
755 という数字でパーミッションを表現できます。
「rw-r--r--」なら
オーナー権限部分「rw-」==> 4 + 2 + 0 = 6
グループ権限部分「r--」==> 4 + 0 + 0 = 4
ユーザ権限部分「r--」==> 4 + 0 + 0 = 4
となり、
644 という数字でパーミッションを表現できます。
-
FTPソフトで見る
FFFTP なら各ファイルの「属性」という欄がパーミッションの表示です。
-
Telnet(SSH)で見る
「ls -l」というコマンドを打つと、一番左に表示されるのがパーミッションです。$ ls -l drwxr-xr-x 5 ----- ----- 4096 May 1 10:50 dat -rwx---r-x 1 ----- ----- 9314 Jul 1 22:35 dsa.cgi -rw----r-- 1 ----- ----- 19311 Jul 2 00:27 dsi.pl -rwx---r-x 1 ----- ----- 18486 Jul 2 00:27 dsw.cgi drwxr-xr-x 2 ----- ----- 4096 May 1 10:50 images -rw----r-- 1 ----- ----- 442 May 1 10:50 index.html drwxr-xr-x 3 ----- ----- 4096 May 1 10:50 lib $
これらは、先頭一文字と、後ろの3文字ずつがそれぞれ意味をもっています。
| d | rwx | r-x | r-x |
|---|---|---|---|
| デ ィ レ ク ト リ (d) か フ ァ イ ル (-) か |
オ | ナ | の 権 限 |
グ ル | プ の 権 限 |
ユ | ザ の 権 限 |
各文字の意味は以下の通り。
- r ・・・ 読み取り許可なら「r」、不許可なら「-」(readable)
- w ・・・ 書き込み許可なら「w」、不許可なら「-」(writable)
- x ・・・ 実行許可なら「x」、不許可なら「-」(executable)
「drwxr-xr-x」は、ディレクトリであり、オーナーには読み書き実行を許可し、グループとユーザには読み取りと実行を許可するというパーミッション設定です。グループとユーザには書き込みの権限はありません。
「-rw-r--r--」は、ファイルであり、オーナーには読み書きの権限があり、グループとユーザには読み込みのみ権限が与えられている設定です。
ディレクトリかファイルかを示す先頭1文字はソフトによって省略されることがあります。
ディレクトリかファイルかという部分を除いた下9桁を数字で表現することがあります。いわゆる八進数を使います。
属性にそれぞれ r = 4、w = 2、x = 1 という数字をあてはめます。不許可 = 0 です。
「rwxr-xr-x」なら
オーナー権限部分「rwx」==> 4 + 2 + 1 = 7
グループ権限部分「r-x」==> 4 + 0 + 1 = 5
ユーザ権限部分「r-x」==> 4 + 0 + 1 = 5
となり、
755 という数字でパーミッションを表現できます。
「rw-r--r--」なら
オーナー権限部分「rw-」==> 4 + 2 + 0 = 6
グループ権限部分「r--」==> 4 + 0 + 0 = 4
ユーザ権限部分「r--」==> 4 + 0 + 0 = 4
となり、
644 という数字でパーミッションを表現できます。
≫CGIでのパーミッション設定
サーバ管理をする場合を除き、簡単なCGIを設置して稼動させるにおいて、設定するパーミッションはだいたい限られています。
■UNIX + Apache サーバで nobody権限の場合
UNIXのApacheは通常 nobody権限で実行され、ファイルの読み書きもnobody権限しかありません。なので、パーミッションでも第三者に対する許可が必要です。
通常のディレクトリ ==> 705
CGIがファイルを作成するディレクトリ ==> 707
拡張子が .cgi や .pl の CGI 実行ファイル ==> 705
拡張子が .cgi や .pl でも直接実行されないライブラリファイル ==> 604
拡張子が .txt や .dat や .log などの読まれるだけのデータファイル ==> 604
拡張子が .txt や .dat や .log などCGIで読み書きされるデータファイル ==> 606
拡張子が .html などの HTML ファイル ==> 604
拡張子が .css や .xml などのファイル ==> 604
■UNIX + Apache サーバで SuExec環境の場合
SuExec環境では、Apacheがユーザ(オーナ)権限で実行されます。したがって、ファイルの読み書き実行はオーナー権限さえあれば大丈夫です。ただし、パーミッションを与えすぎると動かないこともあります。
通常のディレクトリ ==> 701
CGIがファイルを作成するディレクトリ ==> 701
拡張子が .cgi や .pl の CGI 実行ファイル ==> 700
拡張子が .cgi や .pl でも直接実行されないライブラリファイル ==> 600
拡張子が .txt や .dat や .log などの読まれるだけのデータファイル ==> 600
拡張子が .txt や .dat や .log などCGIで読み書きされるデータファイル ==> 600
拡張子が .html などの HTML ファイル ==> 600
拡張子が .css や .xml などのファイル ==> 600
サーバ環境(Apache)が nobody権限で動いているか、SuExec環境かは、サーバ管理者に問い合わせてみましょう。
パーミッションの設定ミスは、サーバにセキュリティホールを作る原因にもなりかねません。注意して行うようにしましょう。
■UNIX + Apache サーバで nobody権限の場合
UNIXのApacheは通常 nobody権限で実行され、ファイルの読み書きもnobody権限しかありません。なので、パーミッションでも第三者に対する許可が必要です。
通常のディレクトリ ==> 705
CGIがファイルを作成するディレクトリ ==> 707
拡張子が .cgi や .pl の CGI 実行ファイル ==> 705
拡張子が .cgi や .pl でも直接実行されないライブラリファイル ==> 604
拡張子が .txt や .dat や .log などの読まれるだけのデータファイル ==> 604
拡張子が .txt や .dat や .log などCGIで読み書きされるデータファイル ==> 606
拡張子が .html などの HTML ファイル ==> 604
拡張子が .css や .xml などのファイル ==> 604
■UNIX + Apache サーバで SuExec環境の場合
SuExec環境では、Apacheがユーザ(オーナ)権限で実行されます。したがって、ファイルの読み書き実行はオーナー権限さえあれば大丈夫です。ただし、パーミッションを与えすぎると動かないこともあります。
通常のディレクトリ ==> 701
CGIがファイルを作成するディレクトリ ==> 701
拡張子が .cgi や .pl の CGI 実行ファイル ==> 700
拡張子が .cgi や .pl でも直接実行されないライブラリファイル ==> 600
拡張子が .txt や .dat や .log などの読まれるだけのデータファイル ==> 600
拡張子が .txt や .dat や .log などCGIで読み書きされるデータファイル ==> 600
拡張子が .html などの HTML ファイル ==> 600
拡張子が .css や .xml などのファイル ==> 600
サーバ環境(Apache)が nobody権限で動いているか、SuExec環境かは、サーバ管理者に問い合わせてみましょう。
パーミッションの設定ミスは、サーバにセキュリティホールを作る原因にもなりかねません。注意して行うようにしましょう。
TOP > スクリプト制作メモ > パーミッションについて