14.2. アクセス ACL の設定
ACL には、アクセス ACL と デフォルト ACL と 2 つのタイプがあります。アクセス ACL は、特定のファイルまたはディレクトリーに対するアクセス制御リストです。デフォルト ACL は、ディレクトリーにのみ適用されます。ディレクトリー内のファイルにアクセス ACL が設定されていない場合は、そのディレクトリーにデフォルト ACL のルールが適用されます。デフォルト ACL は任意です。
ACL は以下のように設定できます。
- 各ユーザー
- 各グループ
- 実効権マスクを使用して
- ファイルのユーザーグループに属さないユーザーに対して
setfacl ユーティリティーは、ファイルとディレクトリー用の ACL を設定します。
-m
オプションを使用して、ファイルまたはディレクトリーの ACL を追加または変更します。
setfacl -m <rules><files>
ルール(<rules>)は、以下の形式で指定する必要があります。複数のルールをコンマで区切って同じコマンドに指定することもできます。
U: <uid>: <perms>
- ユーザーにアクセス ACL を設定します。ユーザー名または UID を指定できます。システムで有効な任意のユーザーを指定できます。
g:<gid>:<perms>
- グループにアクセス ACL を設定します。グループ名または GID を指定できます。システムで有効な任意のグループを指定できます。
m:<perms>
- 実効権マスクを設定します。このマスクは、所有グループの全権限と、ユーザーおよびグループの全エントリーを結合したものです。
o:<perms>
- ファイルのグループに属さないユーザーにアクセス ACL を設定します。
空白は無視されます。パーミッション(<perms>)は、読み取り、書き込み、および実行を表す
r
、w
、および x
の文字の組み合わせである必要があります。
ファイルまたはディレクトリーにすでに ACL が設定されている状態で、setfacl コマンドを使用した場合は、設定するルールが既存の ACL に追加されるか、既存のルールが修正されます。
たとえば、ユーザー「andrius」に読み取りと書き込みの権限を付与するには以下を実行します。
setfacl -m u:andrius:rw /project/somefile
ユーザー、グループ、またはその他のユーザーからすべての権限を削除するには、
-x
オプションにいずれの権限も指定せずに指定します。
setfacl -x <rules><files>
たとえば、UID 500 のユーザーからすべての権限を削除するには以下を実行します。
setfacl -x u:500 /project/somefile