ファイルパーミッション wikipedia|無料辞書
ファイルパーミッション(
file permission)とは、ファイルごとに定義された、読み出し・書込みなどのアクセスに対する許可情報。通常は、
ファイルシステム内のファイルごとに、特定の
ユーザーやグループに対してアクセス権を設定する。これによって、ユーザーごとのファイルシステムの見え方に影響を与え、ファイルシステムに対する変更を制限する。単に
パーミッションとも言う。
◆オペレーティングシステムによる違い
UNIX系や
POSIX準拠のシステムは個々のファイルを単純な方式で管理する。POSIXには
アクセス制御リスト方式も規定されているが、それを実装しているのは一部のファイルシステムやオペレーティングシステムだけである。
◆UNIX系のパーミッション
UNIX系システムのパーミッションは3つの「クラス」に分けて管理される。そのクラスとは「ユーザー; user」、「グループ; group」、「その他; others」である。事実上、UNIXのパーミッションは
アクセス制御リストを単純化したものと言える。
◇クラス
UNIXの
ファイルシステムでは、全ての
ファイルや
ディレクトリは特定のユーザーが「所有」している。オブジェクトの所有者がその「ユーザークラス」に対応する。ユーザークラスのパーミッションはその特定のユーザーにのみ適用される。
ファイルにはグループも対応付けられていて、それが「グループクラス」に対応する。グループクラスのパーミッションはそのグループのメンバー(所有者以外)にのみ適用される。
どちらでもないそれ以外のユーザーには「その他クラス」のパーミッションが適用される。
あるユーザーに適用される実際のパーミッションは、これらの論理的優先順位に従って決定される。例えば、あるファイルを所有するユーザーはグループやその他のクラスがどうであれ、ユーザークラスのパーミッションの適用を受ける。
◇基本パーミッション
UNIX系システムでは、いずれのクラスにも以下の3種類のパーミッションが存在する。
・ 「リード; read」パーミッション:ファイルを読むことが許可される。ディレクトリの場合、ディレクトリ内に存在するファイルの一覧を読むことが許可される。
・ 「ライト; write」パーミッション:ファイルの変更が許可される。ディレクトリの場合、ツリーの構造変更(ファイルの新規作成、作成したファイルのパーミッション設定、ファイルの削除など)が許可される。
・ 「実行; execute」パーミッション:ファイルを実行することが許可される。このパーミッションはバイナリファイル以外でも設定でき、設定されたファイルは実行される(少なくとも要求されれば実行しようと試みる)。ディレクトリに設定されると、そのディレクトリに移動することができ、中のファイルにアクセスすることができる。
パーミッションがセットされていないと、その権利は行使できない。
ACLベースのシステムとは異なり、UNIX系システムのパーミッションは「継承」されない。ディレクトリ内のファイル群はディレクトリと同じパーミッションであるとは限らない。割り当てられるパーミッションは
umaskを使って決定される。
◇その他のパーミッション
UNIX系システムは他に3種類のパーミッション(またはモード)を持つ。これらの特殊なパーミッションはクラスに寄らず、そのファイルやディレクトリ全体に適用される。
・
set user ID、
setuid、SUIDパーミッション:このパーミッションが設定されたファイルを実行すると、生成されるプロセスの実効
ユーザーIDはそのファイルのユーザークラスのものとなる。
・
set group ID、
setgid、SGIDパーミッション:このパーミッションが設定されたファイルを実行すると、生成されるプロセスの実効
グループIDはそのファイルのグループクラスのものとなる。ディレクトリの場合、その配下に作られるファイルのグループはディレクトリのグループを継承する(デフォルトでは実効ユーザーの一次グループが設定される)。
・
Sticky パーミッション:
実行ファイルでは、生成されたプロセスのメモリ上のイメージをプロセス終了後も保持される(これは古いOSでの性能向上策であり、最近のOSでは必ずしもイメージを保持しているとは限らない)。ディレクトリに設定すると、配下のファイル群の改名や削除が(そのファイルの)所有者以外ではできなくなる。所有者以外のユーザーはファイルに書き足す(あるいは他のファイルを連結する)ことしかできない。
◆パーミッションの表記法
◇記号表記(シンボリックモード)
UNIXのパーミッション方式を表示する方法は様々である。最も一般的な形式が記号表記 (symbolic notation) である。この形式ではパーミッションを10文字の文字列で表示する。
先頭の一文字はファイルの種別を表す:
・'-' は一般のファイル
・'c' はキャラクターデバイスのスペシャルファイル
・'p' は名前付きパイプ
・'s' はUNIXドメインのソケット
各クラスのパーミッションは3文字で表示される。1番目の3文字でユーザークラスを表す。2番目でグループクラスを表す。3番目でその他クラスを表す。
その3文字は順にリード、ライト、実行パーミッションをそれぞれ表す。
・'r' ならばリード可で、'-' ならばリード不可。
・'w' ならばライト可で、'-' ならばライト不可。
・'x' ならば実行可で、'-' ならば実行不可。
記号表記の実例を以下に示す。
#"-rwxr-xr-x" 通常ファイルで、所有者は全操作可、それ以外のユーザーはリードと実行のみ可能。
#"crw-rw-r--" キャラクタースペシャルファイルで、所有者およびグループはリード/ライト可能、それ以外のユーザーはリードのみ可能。
#"dr-x------" ディレクトリで、所有者がリードとそこへの移動が可能、それ以外のユーザーはなにもできない。
◇記号表記とその他のパーミッション
その他のパーミッションが加わると、記号表記は若干複雑になる。