概要
`setfacl`は、ファイルシステムオブジェクトに対するより柔軟な権限管理を可能にします。特定のユーザーやグループに読み取り、書き込み、実行権限を個別に付与または削除できるほか、デフォルトACLを設定して、新しいファイルやディレクトリが作成される際に自動的にACLを継承させることもできます。これは、複数のユーザーが共有する環境で、きめ細やかな権限管理が必要な場合に特に役立ちます。
主な機能
- 特定のユーザー/グループに対する個別の権限設定
- デフォルト(Default)ACLの設定と継承
- 既存のACLの変更と削除
- 再帰的(Recursive)な権限適用
主なオプション
`setfacl`は、さまざまなオプションを通じてACLをきめ細かく制御できます。以下は、よく使用される主なオプションです。
ACLの設定と変更
ACLの削除
その他
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`setfacl` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
`setfacl`コマンドを使用してファイルおよびディレクトリのACLを管理するさまざまなシナリオを示します。
特定のユーザーに読み取り/書き込み権限を付与
setfacl -m u:user1:rw testfile.txt
`testfile.txt`ファイルに`user1`ユーザーに読み取り(r)と書き込み(w)権限を付与します。
特定のグループに読み取り専用権限を付与
setfacl -m g:groupA:r shared_dir
`shared_dir`ディレクトリに`groupA`グループに読み取り(r)権限を付与します。
ディレクトリにデフォルト(Default)ACLを設定
setfacl -m d:u:user2:rwx project_data
`project_data`ディレクトリに`user2`ユーザーが新しく作成するファイルに読み取り/書き込み権限を、新しく作成するディレクトリに読み取り/書き込み/実行権限を持つようにデフォルトACLを設定します。
再帰的にACLを適用
setfacl -R -m u:user3:r data_archive
`data_archive`ディレクトリとそのサブディレクトリ内のすべてのファイルおよびディレクトリに`user3`ユーザーに読み取り権限を再帰的に付与します。
特定のユーザーACLエントリを削除
setfacl -x u:user1 testfile.txt
`testfile.txt`ファイルから`user1`ユーザーに対するACLエントリを削除します。
すべての拡張ACLエントリを削除
setfacl -b config_dir
`config_dir`ディレクトリのすべての拡張ACLエントリを削除します。(デフォルト権限は維持)
デフォルト(Default)ACLエントリを削除
setfacl -k project_data
`project_data`ディレクトリで設定されたすべてのデフォルトACLエントリを削除します。
インストール
`setfacl`コマンドは通常`acl`パッケージの一部として提供されます。ほとんどのLinuxディストリビューションではデフォルトでインストールされていますが、もしコマンドが見つからない場合は、次のコマンドを使用してインストールできます。
Debian/Ubuntuベースのシステム
sudo apt update && sudo apt install acl
APTパッケージマネージャーを使用して`acl`パッケージをインストールします。
RHEL/CentOS/Fedoraベースのシステム
sudo yum install acl
# または
sudo dnf install acl
YUMまたはDNFパッケージマネージャーを使用して`acl`パッケージをインストールします。
ヒントと注意点
`setfacl`を効果的に使用し、潜在的な問題を回避するためのヒントと注意点です。
getfaclとの併用
`setfacl`でACLを設定した後、`getfacl <ファイル/ディレクトリ>`コマンドを使用して現在設定されているACLを確認することが重要です。これにより、意図した通りに権限が適用されたかを確認するのに役立ちます。
- 確認コマンド: getfacl <ファイル/ディレクトリ>
マスク(mask)権限の理解
ACLエントリには「マスク(mask)」エントリが存在する場合があります。マスクは、すべてのユーザーおよびグループACLエントリに適用される最大有効権限を定義します。つまり、特定のユーザーやグループに付与された権限がマスク権限よりも高い場合、実際に適用される権限はマスクによって制限されます。`setfacl`でACLを設定する際にマスクが自動的に調整されることがあるため、`getfacl`で確認することが推奨されます。
- 役割: すべてのユーザー/グループACLエントリの最大有効権限の制限
- 確認方法: getfaclの出力で「mask::」の部分を確認
デフォルト権限との相互作用
ACLが設定されたファイルまたはディレクトリは、`ls -l`コマンドで表示する際に権限文字列の末尾に`+`記号が付加されます。これは、標準Unix権限に加えて追加のACLが適用されていることを示します。ACLは標準Unix権限モデルを補完しますが、時には複雑さを増す可能性があるため、慎重に使用する必要があります。
- ACL適用表示: ls -lの出力時に権限文字列の末尾に'+'記号が表示される
再帰的適用(-R)時の注意
`-R`オプションを使用してACLを再帰的に適用する際は注意が必要です。特に`-b`(すべてのACL削除)と併用すると、サブディレクトリ内のすべてのファイルとディレクトリのACLが意図せず削除される可能性があります。常に`--test`オプションでまず結果を確認するか、重要なデータにはバックアップを取ってから適用することを推奨します。
- 推奨事項: `--test`オプションで事前確認、重要なデータはバックアップ後に適用