setfacl コマンドは、ファイルまたはディレクトリーの ACL に関連付けられた許可を変更するために使用されます。 setfacl コマンドにはいくつかのオプションがあり、最も一般的なものを次の表に示します。
オプション | 説明 |
---|---|
-R | ディレクトリとその内容の ACL オプションを再帰的に設定します。 |
-s | オブジェクトの ACL を設定し、既存の ACL を置き換えます。 |
-m | オブジェクトの既存の ACL を変更します。 |
-x | 既存の ACL からエントリを削除します。 |
-b | すべての ACL エントリを削除します (標準の権限は含まれません)。 |
構文
setfacl コマンドの構文は次のとおりです。
# setfacl [-bR] [-mx {acl_spec}] {file/directory names}
以下は、ユーザー http に読み取りアクセス権が付与されているディレクトリの ACL を変更する例です:
setfacl -m u:http:r-- /home/directory
setfacl コマンドの実行中に以下のエラーが発生した場合:
setfacl: command not found
選択したディストリビューションに従って、以下のパッケージをインストールしてみてください:
分布 | コマンド |
---|---|
Debian | apt-get インストール acl |
Ubuntu | apt-get インストール acl |
アルパイン | apk add acl |
Arch Linux | pacman -S acl |
カリ Linux | apt-get インストール acl |
CentOS | yum install acl |
Fedora | dnf install acl |
Raspbian | apt-get インストール acl |
ACL の削除
setfacl コマンドを -x オプションとともに使用して、ユーザーまたはグループに適用された ACL を削除することもできます。設定 ACL から ACL を削除する場合の唯一の違いは、削除中にアクセス許可を指定しないことです。次の例は、setfacl コマンドを使用して、ユーザー geel とグループ lab の file1 という名前のファイルに適用された ACL を削除する方法を示しています:
$ setfacl -x u:geek,g:lab file1
ファイルまたはディレクトリからすべての ACL を削除するには、次のコマンドに示すように -b オプションを使用できます:
$ setfacl -b file1
setacl コマンドの例
1. 読み取りおよび書き込みアクセス権を持つユーザーのファイルの ACL を変更します:
# setfacl -m u:username:rw file
2. すべてのユーザーのファイルのデフォルト ACL を変更します:
# setfacl -d -m u::rw file
3. ユーザーのファイルの ACL を削除します:
# setfacl -x u:username file
4. ファイルのすべての ACL エントリを削除します:
# setfacl -b file