手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 ACL の使い方 – setfacl / getfacl で権限を追加する

Ubuntu 22.04 で POSIX ACL を使い、通常の所有者・グループ・その他だけでは表現しにくい権限を追加する手順です。setfaclgetfacl を使い、ユーザー単位・グループ単位の権限を確認しながら設定します。

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/shared
user::rwx
group::rwx
other::---

ユーザーに権限を追加する

acltest ユーザーへ読み取り・実行権限を追加します。ディレクトリの一覧と移動だけを許可し、書き込みは許可しない例です。

sudo setfacl -m u:acltest:rx /srv/shared
getfacl -c /srv/shared
user::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/shared

ACL を削除する

特定の 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 は削除します。

関連する記事
Ubuntu 22.04 ACL の使い方 – setfacl / getfacl で権限を追加する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る