TOP > スクリプト制作メモ > パーミッションについて

≫パーミッションとは

パーミッションとは、直訳すれば「許可」。
UNIXなどのファイル操作でパーミッションと言えば、ファイルを扱える「権限」を指す。
UNIXなどネットワークサーバ系のOSはひとりだけで使うものではない。したがって、ファイルごとに読み・書き・実行の権限が設定できるようになっている。その設定をパーミッションと言う。

≫オーナーとかグループとかユーザについて

ファイルには所有者がいます。ファイルを作った人、もしくは、所有者として設定された人。
そのファイルの所有者自身をオーナーと言います。

同じグループのユーザーはグループ属性のパーミッションが適用されます。

ファイルの所有者でもなければ、グループでもない第三者をユーザと言います。

この3つのユーザに適切なパーミッションを設定することが大切です。

ディレクトリに関してもファイルと同様です。

≫パーミッションの見方

それぞれのファイルに設定されているパーミッションを確かめるにはFTPソフトやTelnet(SSH)を使用します。
  • FTPソフトで見る
    FFFTP なら各ファイルの「属性」という欄がパーミッションの表示です。
    FTPソフトのパーミッション表示例


  • 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
    $
    
パーミッションは、例えば「drwxr-xr-x」や「-rw-r--r--」というように表示されます。

これらは、先頭一文字と、後ろの3文字ずつがそれぞれ意味をもっています。
drwxr-xr-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環境かは、サーバ管理者に問い合わせてみましょう。

パーミッションの設定ミスは、サーバにセキュリティホールを作る原因にもなりかねません。注意して行うようにしましょう。

TOP > スクリプト制作メモ > パーミッションについて
(C) bayashi.net