ファイルパーミッション(file permission)とは、ファイルごとに定義された、読み出し・書込みなどのアクセスに対する許可情報。通常は、ファイルシステム内のファイルごとに、特定のユーザーやグループに対してアクセス権を設定する。これによって、ユーザーごとのファイルシステムの見え方に影響を与え、ファイルシステムに対する変更を制限する。単にパーミッションとも言う。 Unix系やPOSIX準拠のシステムは、Linuxや macOS も含めて個々のファイルを単純な方式で管理する。それらシステムの多くは何らかのアクセス制御リスト (ACL) もサポートしており、独自方式(例えば、古いHP-UXのACL)、POSIX.1e のACL方式(かつてPOSIXのドラフト版で規定されたが結局規格化されなかった)、NFSv4標準の一部のACLなどがある。 MS-DOS系のオペレーティングシステム(PC DOS、Windows 95、Windows 98、Windows Meなどを含む)はパーミッションを持たない。単に「リードオンリー(読み込みのみ)」というファイル属性を任意のユーザーがファイル単位に設定できるだけである。リードオンリー属性を設定しても、どのユーザーでもプログラムでもその設定を変更できるので、ファイルを変更したり削除したりするのを防げない。また、ユーザーがファイルを読めないように設定する属性が存在しない(隠すことはできるが、パス名を知っていれば読むことは可能)。 他のMS-DOS互換OS(DR-DOS 3.31 およびそれ以降、PalmDOS、Novell DOS、OpenDOS、FlexOS
オペレーティングシステムによる違い
OpenVMSや Windows NT との派生OS(Windows 2000、Windows XP など)はアクセス制御リスト (ACL)[1] を使用してもっと複雑で多様なパーミッションを管理している。OpenVMSはまたUnix系と同様のパーミッション方式も使えるが、Unix系よりも複雑である。後述のクラスが4つあり(システム、オーナー、グループ、ワールド)、アクセスパーミッションも4つある(リード、ライト、実行、削除)。クラスは包含関係にあり、ワールドにはグループが含まれ、グループにはオーナーが含まれる。システムクラスにはシステムユーザーしか属さない(Unix系のスーパーユーザーに相当する)[2]。
古い Mac OS はDOS系やDOSベースのWindowsと同様パーミッションを持たないが、"Protected" という属性だけをサポートしていた。
AmigaのAmigaDOSは当時のシングルユーザーOSとしては進んだパーミッション体系をサポートしていた。AmigaOS 1.x では、アーカイブ/リード/ライト/実行/削除というパーミッションを備えていた。AmigaOS 2.x およびそれ以降では、さらに Hold/Script/Pure というパーミッションもサポートしている。
Mac OS X v10.3 (Panther) およびそれ以前は、POSIX準拠のパーミッションを使用していた。Mac OS X v10.4 (Tiger) 以降では NFSv4 ACL もサポートしている。従来からのUnix系のファイルパーミッション方式もサポートしており、Apple Mac OS X Server version 10.4+ File Services Administration Manual では従来からのパーミッション方式のみを使用することを推奨していた。また、Classic Mac OS での "Protected" 属性もサポートしている。
Solaris でのACLサポートは使用するファイルシステムに依存する。古いUFSは POSIX.1e ACL をサポートしており、ZFSは NFSv4 ACL のみをサポートしている。
Linuxは POSIX.1e ACL をサポートしている。ext3ファイルシステム向けに実験的に NFSv4 ACL をサポートした例がある[3]。
FreeBSDは UFS では POSIX.1e ACL をサポートし、UFS と ZFS では NFSv4 ACL をサポートしている[4]。
IBM z/OS ではファイルセキュリティを RACF (Resource Access Control Facility) で実装している[5]。 Unix系システムのパーミッションは3つの「クラス」に分けて管理される。そのクラスとは「ユーザー; user」、「グループ; group」、「その他; others」である。事実上、UNIXのパーミッションはアクセス制御リストを単純化したものと言える。 UNIXのファイルシステムでは、全てのファイルやディレクトリは特定のユーザーが「所有」している。オブジェクトの所有者がその「ユーザークラス」に対応する。ユーザークラスのパーミッションはその特定のユーザーにのみ適用される。 ファイルにはグループも対応付けられていて、それが「グループクラス」に対応する。グループクラスのパーミッションはそのグループのメンバー(所有者以外)にのみ適用される。 どちらでもないそれ以外のユーザーには「その他クラス」のパーミッションが適用される。 あるユーザーに適用される実際のパーミッションは、これらの論理的優先順位に従って決定される。例えば、あるファイルを所有するユーザーはグループやその他のクラスがどうであれ、ユーザークラスのパーミッションの適用を受ける。 Unix系システムでは、いずれのクラスにも以下の3種類のパーミッションが存在する。 パーミッションがセットされていないと、その権利は行使できない。ACLベースのシステムとは異なり、Unix系システムのパーミッションは「継承」されない。ディレクトリ内のファイル群はディレクトリと同じパーミッションであるとは限らない。
Unix系のパーミッション
クラス
基本パーミッション
「リード; read」パーミッション:ファイルを読むことが許可される。ディレクトリの場合、ディレクトリ内に存在するファイルの一覧を読むことが許可される。
「ライト; write」パーミッション:ファイルの変更が許可される。ディレクトリの場合、ツリーの構造変更(ファイルの新規作成、作成したファイルのパーミッション設定、ファイルの削除など)が許可される。
「実行; execute」パーミッション:ファイルを実行することが許可される。このパーミッションはバイナリファイル以外でも設定でき、設定されたファイルは実行される(少なくとも要求されれば実行しようと試みる)。ディレクトリに設定されると、そのディレクトリに移動することができ、中のファイルにアクセスすることができる。
Size:25 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef