Solaris のシステム管理 (セキュリティサービス)

アクセス制御リストによる UFS ファイルの保護

従来の 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
entry-type

ファイルのアクセス権を設定する ACL エントリの種類です。たとえば、entry-typeuser (ファイルの所有者) または mask (ACL マスク) に設定できます。ACL エントリの一覧については、表 6–7表 6–8 を参照してください。

uid

ユーザー名またはユーザー ID (UID) です。

gid

グループ名またはグループ ID (GID) です。

perms

entry-type に設定するアクセス権を表します。perms は、記号文字 rwx または 8 進数の数字で指定できます。これらは chmod コマンドに使用するのと同じ数字です。

次に、ユーザー stacey の読み取り権と書き込み権を設定する ACL エントリの例を示します。


user:stacey:rw-

注意 – 注意 –

ACL などの UFS ファイルシステム属性は UFS ファイルシステムだけでサポートされます。そのため、/tmp ディレクトリ (通常は、TMPFS ファイルシステムとしてマウントされている) で ACL エントリを持つファイルを復元またはコピーすると、その ACL エントリは失われます。UFS ファイルを一時的に格納するには、/var/tmp ディレクトリを使用してください。


UFS ファイルの ACL エントリ

次の表は、ファイルに 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 の数値を指定できます。

UFS ディレクトリの ACL エントリ

表 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 を制御するコマンド

次のコマンドは、UFS ファイルまたはディレクトリに設定される ACL の管理に使用されます。

setfacl コマンド

ACL エントリの設定、追加、変更、および削除を行います。詳細は、setfacl(1) のマニュアルページを参照してください。

getfacl コマンド

ACL エントリを表示します。詳細は、getfacl(1) のマニュアルページを参照してください。