Ubuntu 22.04 で POSIX ACL を使い、通常の所有者・グループ・その他だけでは表現しにくい権限を追加する手順です。setfacl と getfacl を使い、ユーザー単位・グループ単位の権限を確認しながら設定します。
ACL は便利ですが、権限が見えにくくなる面もあります。単純な所有者変更やグループ設計で済む場合は通常の Unix 権限を優先し、必要な箇所だけ ACL を使う方が運用しやすくなります。
- ACL が必要になる場面
aclパッケージと基本コマンドsetfaclによるユーザー・グループ権限の追加- デフォルト ACL と削除方法
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の権限管理や運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
ACL を使う場面
| 場面 | 考え方 |
| 特定ユーザーだけ許可したい | 所有者やグループを変えずに追加権限を付与する |
| 複数グループに許可したい | 主グループを変えずに別グループへ権限を足す |
| 共有ディレクトリを運用する | 新規作成ファイルにデフォルト ACL を適用する |
| 権限の見通しを保ちたい | getfacl -c でヘッダーを省いた結果を確認する |
パッケージを確認する
Ubuntu 22.04 では ACL 関連コマンドが入っていることが多いですが、明示的に acl パッケージを確認しておきます。
sudo apt update
sudo apt install -y acl
getfacl --version
setfacl --version検証用ディレクトリを作成する
共有ディレクトリの例として、所有グループを system-ops にしたディレクトリを作成します。
sudo groupadd system-ops
sudo useradd -m acltest
sudo mkdir -p /srv/shared
sudo chown root:system-ops /srv/shared
sudo chmod 2770 /srv/shared現在の権限を確認する
getfacl -c を使うと、ヘッダー行を省いて ACL 本体だけを確認できます。
getfacl -c /srv/shareduser::rwx
group::rwx
other::---ユーザーに権限を追加する
acltest ユーザーへ読み取り・実行権限を追加します。ディレクトリの一覧と移動だけを許可し、書き込みは許可しない例です。
sudo setfacl -m u:acltest:rx /srv/shared
getfacl -c /srv/shareduser::rwx
user:acltest:r-x
group::rwx
mask::rwx
other::---グループに権限を追加する
特定グループへ権限を追加する場合は g: を使います。
sudo groupadd app-ops
sudo setfacl -m g:app-ops:rwx /srv/shared
getfacl -c /srv/sharedデフォルト ACL を設定する
共有ディレクトリ配下で新しく作られるファイルやディレクトリに ACL を継承させたい場合は、デフォルト ACL を設定します。
sudo setfacl -d -m g:app-ops:rwx /srv/shared
getfacl -c /srv/sharedACL を削除する
特定の ACL だけを削除する場合は -x、拡張 ACL をまとめて削除する場合は -b を使います。
sudo setfacl -x u:acltest /srv/shared
sudo setfacl -x g:app-ops /srv/shared
sudo setfacl -k /srv/shared
getfacl -c /srv/sharedまとめて確認する
ACL が残っている場所を確認したい場合は、対象ディレクトリを絞って確認します。広い範囲を無条件に走査すると時間がかかるため、確認対象を限定します。
find /srv/shared -maxdepth 2 -exec getfacl -c {} \;運用上の注意
- 通常の所有者・グループ設計で済む場合は ACL を増やしすぎない
getfacl -cで実際の付与状態を確認する- 共有ディレクトリではデフォルト ACL と
chmod 2770の役割を分けて考える - 不要になった ACL は
setfacl -xまたはsetfacl -bで削除する - 権限トラブル時は通常のモード、所有者、ACL の順に確認する
まとめ
Ubuntu 22.04 で ACL を使うと、通常の所有者・グループ・その他だけでは表現しにくい権限を追加できます。特定ユーザーや特定グループに対して、読み取り、書き込み、実行権限を個別に付与できます。
一方で、ACL は権限が見えにくくなりやすいため、共有ディレクトリや例外的な権限追加に限定して使うのが扱いやすいです。設定後は getfacl -c で確認し、不要になった ACL は削除します。

