従来の UNIX ファイル保護機能は、ファイルの所有者、ファイルグループ、その他のユーザーという 3 つのユーザークラスに 読み取り権、書き込み権、実行権を提供します。UFS ファイルシステムでは、アクセス制御リスト (ACL) により次のことが可能となり、ファイルセキュリティーを管理するレベルがさらに詳細になります。
ファイル所有者、グループ、その他のユーザー、特定のユーザーおよびグループにファイルアクセス権を定義します
これらの各カテゴリにデフォルトのアクセス権を定義します
ZFS ファイルシステムの ACL および NFSv4 ファイルの ACL については、『Oracle Solaris ZFS 管理ガイド』の第 8 章「ACL による Oracle Solaris ZFS ファイルの保護」を参照してください。
たとえば、グループ内のすべてのユーザーがファイルを読み取れるようにする場合は、そのファイルにグループの読み取り権を設定すればすみます。その場合に、そのグループ内の 1 人のユーザーだけに書き込み権を与えたいとします。標準の UNIX ではファイルセキュリティーをこのように設定することはできませんが、ACL では可能です。
ACL エントリはファイルの ACL を定義する手段であり、UFS ファイルシステムでは、エントリは setfacl コマンドを使って設定されます。UFS ACL エントリは、次のようにコロンで区切ったフィールドで構成されます。
entry-type:[uid|gid]:perms |
ファイルのアクセス権を設定する ACL エントリの種類です。たとえば、entry-type は user (ファイルの所有者) または mask (ACL マスク) に設定できます。ACL エントリの一覧については、表 6–7 と表 6–8 を参照してください。
ユーザー名またはユーザー ID (UID) です。
グループ名またはグループ ID (GID) です。
entry-type に設定するアクセス権を表します。perms は、記号文字 rwx または 8 進数の数字で指定できます。これらは chmod コマンドに使用するのと同じ数字です。
次に、ユーザー stacey の読み取り権と書き込み権を設定する ACL エントリの例を示します。
user:stacey:rw- |
ACL などの UFS ファイルシステム属性は UFS ファイルシステムだけでサポートされます。そのため、/tmp ディレクトリ (通常は、TMPFS ファイルシステムとしてマウントされている) で ACL エントリを持つファイルを復元またはコピーすると、その ACL エントリは失われます。UFS ファイルを一時的に格納するには、/var/tmp ディレクトリを使用してください。
次の表は、ファイルに ACL を設定するときに使用する有効な ACL エントリの一覧です。最初の 3 つの ACL エントリは、基本的な UNIX のファイル保護機能を提供します。
表 6–7 UFS ファイルの ACL エントリ
ACL エントリ |
説明 |
---|---|
u[ser]::perms |
所有者のアクセス権。 |
g[roup]::perms |
グループのアクセス権。 |
o[ther]:perms |
所有者やグループのメンバー以外のユーザーのアクセス権。 |
m[ask]:perms |
ACL マスク。マスクエントリは、ユーザー (所有者以外) とグループに許可される最大アクセス権を示します。マスクは、すべてのユーザーとグループのアクセス権を即時に変更する手段です。 たとえば、mask:r-- マスクエントリは、ユーザーとグループが書き込み権および実行権を持つことがアカウントに示されていても、読み取り権しか使用できないことを意味します。 |
u[ser]:uid:perms |
特定のユーザーのアクセス権。uid には、ユーザー名または UID の数値を指定できます。 |
g[roup]:gid:perms |
特定のグループのアクセス権。gid には、グループ名または GID の数値を指定できます。 |
表 6–7 に示した ACL エントリのほかに、ディレクトリにはデフォルトの ACL エントリも設定できます。デフォルトの ACL エントリを持つディレクトリ内で作成されたファイルまたはディレクトリは、デフォルトの ACL エントリと同じ ACL エントリを持つことになります。表 6–8 は、ディレクトリに使用するデフォルトの ACL エントリの一覧です。
ディレクトリ上の特定のユーザーおよびグループに対してデフォルトの ACL エントリを初めて設定するときは、所有者、グループ、その他のユーザー、および ACL マスクにもデフォルトの ACL エントリを設定する必要があります。これらのエントリは、必ず設定しなければなりません。これらは、次の表に示された最初の 4 つのデフォルト ACL エントリに相当します。
表 6–8 UFS ディレクトリのデフォルト ACL エントリ
デフォルトの ACL エントリ |
説明 |
---|---|
d[efault]:u[ser]::perms |
所有者のデフォルトアクセス権。 |
d[efault]:g[roup]::perms |
グループのデフォルトアクセス権。 |
d[efault]:o[ther]:perms |
所有者やグループのメンバー以外のユーザーのデフォルトアクセス権。 |
d[efault]:m[ask]:perms |
デフォルトの ACL マスク。 |
d[efault]:u[ser]:uid:perms |
特定のユーザーのデフォルトアクセス権。uid には、ユーザー名または UID の数値を指定できます。 |
d[efault]:g[roup]:gid:perms |
特定のグループのデフォルトアクセス権。gid には、グループ名または GID の数値を指定できます。 |
次のコマンドは、UFS ファイルまたはディレクトリに設定される ACL の管理に使用されます。
ACL エントリの設定、追加、変更、および削除を行います。詳細は、setfacl(1) のマニュアルページを参照してください。
ACL エントリを表示します。詳細は、getfacl(1) のマニュアルページを参照してください。