ACLとは?
アクセス制御リスト(ACL)は、ファイルシステムに対して追加の、より柔軟な権限メカニズムを提供します。 これは、UNIX ファイルのパーミッションを支援するために設計されています。 ACL を使用すると、任意のディスク リソースに対して任意のユーザーまたはグループにパーミッションを与えることができます。
ACL の使用 :
特定のユーザーが作成したグループのメンバーではないが、いくつかの読み取りまたは書き込みアクセスを与えたいシナリオを考えてみてください。
Linux man ページによると、ACL はファイルやディレクトリに対して、より細かい裁量的なアクセス権を定義するために使用されます。
setfacl と getfacl はそれぞれ ACL を設定するためと ACL を表示するために使用します。
例 :
getfacl test/declarations.h
Output:
# file: test/declarations.h# owner: mandeep# group: mandeepuser::rw-group::rw-other::r--
ACL 設定コマンド一覧 :
1) To add permission for usersetfacl -m "u:user:permissions" /path/to/file2) To add permissions for a groupsetfacl -m "g:group:permissions" /path/to/file 3) To allow all files or directories to inherit ACL entries from the directory it is withinsetfacl -dm "entry" /path/to/dir4) To remove a specific entrysetfacl -x "entry" /path/to/file5) To remove all entriessetfacl -b path/to/file
例 :
setfacl -m u:mandeep:rwx test/declarations.h
Modifying ACL using setfacl :
ユーザーに対してパーミッションを追加するには (user is either the user name or id):
# setfacl -m "u:user:permissions"
To add permissions for a group (group is either the group name or the ID):
# setfacl -m "g:group:permissions"
To allow all files or directories to inherit ACL entries from the directory is within:
# setfacl -dm "entry"
例:
setfacl -m u:mandeep:r-x test/declarations.h
See below image for output :
setfacl と getfacl
View ACL :
パーミッションを表示するには :
# getfacl filename
setfacl コマンドで ACL パーミッションを設定した前と後の getfacl コマンドの出力が異なることを観察してください。
上の画像でハイライトされているユーザー mandeep に対して追加された行があります。
出力:
change permissions
上記のコマンドはパーミッションを rwx から r-x
ACL 削除 :
設定した ACL パーミッションを削除するには -b オプションをつけて setfacl コマンドを使用します。
例えば :
remove set permissions
getfacl コマンドの出力を -b オプション付き setfacl コマンドの前と後で比較すると、後の出力にはユーザー mandeep の特定のエントリはないことが分かります。
check set acl with ls
画像の最初のコマンド出力を見てください、-rw-rwxr-+のようにパーミッションの後に「+」記号が付いています、これはgetfaclコマンドでチェックできる追加のACLパーミッションが設定されていることを表します。
デフォルトACLの使用 :
デフォルトACLとは、ディレクトリに割り当てられた特定のタイプのパーミッションで、ディレクトリ自体のパーミッションを変更するのではなく、その中に作成されたすべてのファイルにデフォルトで特定のACLが設定されるようにするものです。 まず、ディレクトリを作成し、-d オプションを使用してデフォルトの ACL を設定します:
$ mkdir test && setfacl -d -m u:dummy:rw test