ACL を設定する構文の説明
基本的な ACL 形式として、次の 2 つの形式が用意されています。
-
簡易 ACL - 従来の UNIX user、group、および owner エントリのみが含まれます。
簡易 ACL を設定するには、次のコマンド構文を使用します。
chmod [options] A[index]{+|=}owner@ |group@ |everyone@: \
access-permissions/...[:inheritance-flags]:deny | allow file
chmod [options] A-owner@, group@, everyone@: \
access-permissions/...[:inheritance-flags]:deny | allow file ...
chmod [options] A[index]- file
-
非簡易 ACL – 所有者、グループ、および全員だけでなくそれ以外のエントリが含まれるか、継承フラグセットが含まれるか、またはエントリが従来とは異なる方法で順序付けられます。
非簡易 ACL を設定するには、次のコマンド構文を使用します。
chmod [options] A[index]{+|=}user|group:name: \
access-permissions/...[:inheritance-flags]:deny | allow file
chmod [options] A-user|group:name: \
access-permissions/...[:inheritance-flags]:deny | allow file ...
chmod [options] A[index]- file
次の一覧は、簡易および非簡易 ACL を設定するためのコマンドで使用されるオプションを示しています。
- owner@, group@, everyone@
-
簡易 ACL 構文の ACL-entry-type を指定します。ACL-entry-types については、Table 7–1 を参照してください。
- user または group:ACL-entry-ID=username または groupname
-
明示的な ACL 構文の ACL-entry-type を指定します。ユーザーとグループの ACL-entry-type には、ACL-entry-ID と、username または groupname も含める必要があります。ACL-entry-types については、Table 7–1 を参照してください。
- access-permissions/.../
-
許可または拒否するアクセス権を指定します。ACL アクセス特権については、Table 7–2 を参照してください。
- inheritance-flags
-
ACL 継承フラグのオプションリストを指定します。ACL 継承フラグについては、Table 7–4 を参照してください。
- deny | allow
-
そのアクセス権を許可するかまたは拒否するかを指定します。
次の例では、owner@、group@、または everyone@ についての ACL-entry-ID の値は存在しません。
group@:write_data/append_data/execute:deny
次の例では、ACL-entry-ID が含まれています。特定のユーザー (ACL-entry-type) を ACL に含めるためです。
0:user:joe:list_directory/read_data/execute:allow
次のような ACL エントリが表示されます。
2:group@:write_data/append_data/execute:deny
この例では 2 つまり index-ID が指定されていますが、これは、より大きな ACL の ACL エントリであることを示しています。所有者、特定の UID、グループ、および全員のための複数のエントリで構成される可能性があります。chmod コマンドと一緒に index-ID を指定すれば、ACL のどの部分を変更するかを指定できます。たとえば次のように、chmod コマンドに A3 と指定して、インデックス ID 3 を特定することができます。
chmod A3=user:venkman:read_acl:allow filename
次の表は、所有者、グループ、およびその他の ACL 表現である、ACL エントリタイプを示しています。
表 7-1 ACL エントリタイプ
|
|
owner@
|
オブジェクトの所有者に許可するアクセス権を指定します。
|
group@
|
オブジェクトを所有するグループに許可するアクセス権を指定します。
|
everyone@
|
ほかのどの ACL エントリにも一致しないすべてのユーザーまたはグループに許可するアクセス権を指定します。
|
user
|
ユーザー名を使って、オブジェクトに追加するユーザーに許可するアクセス権を指定します。ACL-entry-ID を含める必要があります。username または userID を指定します。値が有効な数値 UID または username でない場合、その ACL エントリタイプは無効です。
|
group
|
グループ名を使って、オブジェクトに追加するグループに許可するアクセス権を指定します。ACL-entry-ID を含める必要があります。groupname または groupID を指定します。値が有効な数値 GID または groupname でない場合、その ACL エントリタイプは無効です。
|
|
ACL アクセス特権について、次の表で説明します。
表 7-2 ACL アクセス特権
|
|
|
add_file
|
w
|
ディレクトリに新しいファイルを追加するためのアクセス権。
|
add_subdirectory
|
p
|
ディレクトリ上でサブディレクトリを作成するためのアクセス権。
|
append_data
|
p
|
現時点では実装されていません。
|
delete
|
d
|
ファイルを削除するためのアクセス権。 delete アクセス権の特定の動作の詳細については、 Table 7–3 を参照してください。
|
delete_child
|
D
|
ディレクトリ内のファイルまたはディレクトリを削除するためのアクセス権。 delete_child アクセス権の特定の動作の詳細については、 Table 7–3 を参照してください。
|
execute
|
x
|
ファイルを実行するためのアクセス権またはディレクトリの内容を検索するためのアクセス権。
|
list_directory
|
r
|
ディレクトリの内容を表示するためのアクセス権。
|
read_acl
|
c
|
ACL (ls) を読み取るためのアクセス権。
|
read_attributes
|
a
|
ファイルの基本属性 (ACL 以外) を読み取るためのアクセス権。基本属性は、stat レベルの属性と考えてください。このアクセスマスクビットを許可したエンティティーは、ls(1) および stat(2) を実行できる状態になります。
|
read_data
|
r
|
ファイルの内容を読み取るためのアクセス権。
|
read_xattr
|
R
|
ファイルの拡張属性を読み取るためのアクセス権。または、ファイルの拡張属性ディレクトリの検索を実行するためのアクセス権。
|
synchronize
|
s
|
現時点では実装されていません。
|
write_xattr
|
W
|
拡張属性を作成するためのアクセス権。または、拡張属性ディレクトリに書き込みむためのアクセス権。
このアクセス権を許可したユーザーは、ファイルの拡張属性ディレクトリを作成できます。属性ファイルのアクセス権を使って、その属性にユーザーがアクセスできるかどうかを制御します。
|
write_data
|
w
|
ファイルの内容を変更または置き換えるためのアクセス権。
|
write_attributes
|
A
|
ファイルまたはディレクトリに関連付けられた時間を任意の値に変更するためのアクセス権。
|
write_acl
|
C
|
ACL を書き込むためのアクセス権。つまり chmod コマンドを使用して ACL を変更することができます。
|
write_owner
|
o
|
ファイルの所有者またはグループを変更するためのアクセス権。つまり、ファイルに対して chown または chgrp コマンドを実行することができます。
ファイルの所有権を取得するためのアクセス権。または、ファイルのグループ所有権をユーザーが所属するグループに変更するためのアクセス権。ファイルまたはグループの所有権を任意のユーザーまたはグループに変更する場合は、PRIV_FILE_CHOWN 権限が必要です。
|
|
次の表に、ACL delete および delete_child の動作の追加詳細を示します。
表 7-3 ACL delete および delete_child アクセス権の動作
|
|
|
ACL は delete を許可
|
ACL は delete を拒否
|
未指定のアクセス権を削除
|
ACL は delete_child を許可
|
パーミット
|
パーミット
|
パーミット
|
ACL は delete_child を拒否
|
パーミット
|
拒否
|
拒否
|
ACL は write と execute だけを許可
|
パーミット
|
パーミット
|
パーミット
|
ACL は write と execute を拒否
|
パーミット
|
拒否
|
拒否
|
|
ZFS ACL セット
次の ACL の組み合わせを、個々のアクセス権を個別に設定するのではなく ACL セットで適用できます。次のような ACL セットが利用可能です。
|
|
full_set
|
すべてのアクセス権
|
modify_set
|
write_acl と write_owner を除くすべてのアクセス権
|
read_set
|
read_data、read_attributes、 read_xattr、および read_acl
|
write_set
|
write_data、append_data、write_attributes 、および write_xattr
|
|
これらの ACL セットは事前に定義されたものであり、変更することはできません。