この記事の最終更新日: 2025年5月19日
はじめに
UbuntuなどのLinuxサーバーやデスクトップ環境を運用する際、「誰がどの操作をできるか」を正しく制御することは非常に重要です。これを怠ると、情報漏洩や予期せぬシステムトラブルに繋がります。本記事では、Ubuntu環境に焦点を当てながら、ACL(Access Control List)とRBAC(Role-Based Access Control)の仕組み、違い、使い分け方について初心者向けに分かりやすく解説していきます。

1. ACL(アクセス制御リスト)とは
1.1 定義
ACLは、ファイルやディレクトリなどリソースごとに「どのユーザー/グループがどの操作を許可されているか」を細かく設定する仕組みです。 Ubuntuでは、標準のパーミッション(所有者・グループ・その他)に加えて、より柔軟なアクセス管理が可能になります。
- リソース単位で詳細なアクセス権を設定可能。
- 主な利用例:共有ディレクトリで複数グループに異なる権限を与えるなど。
1.2 Ubuntuでの仕組みイメージ
たとえば、ファイル「/project/report.docx」に対して、次のようなACL設定を行えます。
$ getfacl /project/report.docx
# file: project/report.docx
# owner: alice
# group: alice
user::rw-
user:bob:r--
group:sales:r--
mask::r--
other::---
この設定により、Aliceは読み書き、BobとSalesグループのメンバーは読み取りのみが可能になります。
1.3 メリット・デメリット
- メリット
- 標準のパーミッションよりも細かい制御が可能。
- 特定のユーザーやグループに柔軟にアクセス権を設定できる。
- デメリット
- 設定が複雑になりやすく、管理ミスによるセキュリティリスクも。
- ACL機能を有効にするためにファイルシステム側で設定が必要な場合がある。
2. RBAC(役割ベースアクセス制御)とは
2.1 定義
RBAC(Role-Based Access Control)は、ユーザーに直接権限を付与するのではなく、「役割(Role)」に権限を付与し、その役割をユーザーに割り当てる管理方式です。
Ubuntuサーバー環境では、sudo
グループや自作のユーザーグループを活用することで簡易的なRBACを実現できます。
- 役割ごとに権限をまとめられるため、管理がスムーズ。
- 主な利用例:管理者(root権限)、開発者(開発用ファイルアクセス権)などの区分。
2.2 Ubuntuでの仕組みイメージ
たとえば、admin
グループを作成して、サーバーの設定変更権限を与えます。
$ sudo groupadd admin
$ sudo usermod -aG admin alice
$ sudo usermod -aG admin bob
# /etc/sudoersファイルでadminグループにsudo権限を付与
%admin ALL=(ALL) ALL
これで、adminグループに属するユーザーは、sudoコマンドで管理操作ができるようになります。
2.3 メリット・デメリット
- メリット
- 権限管理がスケーラブルで、大人数でも混乱しにくい。
- 権限の追加・削除が役割単位で簡単に行える。
- デメリット
- 役割設計が不十分だと運用が複雑化し、意図しない権限漏れのリスクもある。
3. ACL と RBAC の比較(Ubuntu文脈)
ACL (Ubuntu getfacl/setfacl) | RBAC (Ubuntuグループ管理) | |
---|---|---|
制御単位 | ファイル・ディレクトリ単位のユーザー/グループ設定 | グループ(Role)単位での権限管理 |
設定の粒度 | 非常に細かい | 中〜大粒度 |
管理のしやすさ | 大規模になると煩雑 | 大人数でも整理しやすい |
例外対応 | 容易(個別に追加設定可能) | 例外にはやや不向き |
適したユースケース | 特定ファイルへの特殊なアクセス管理 | 組織単位・役割単位でのシステム管理 |
4. 選び方のポイント
- 細かくファイル単位で制御したい場合
→ ACL を使いましょう。 - 組織単位・ロール単位で運用管理を簡略化したい場合
→ RBAC をベースにしましょう。 - ハイブリッド運用も有効
- 例:基本はRBACで管理し、特別なファイルアクセスにはACLを適用する。
5. Ubuntuでの設定手順まとめ
ACLを設定する手順(Ubuntu)
- ACLサポートを確認
- ファイルシステムに
acl
オプションが付いているか確認。
- ファイルシステムに
- ACLコマンドを使って設定
$ sudo setfacl -m u:alice:rw /project/report.docx $ sudo setfacl -m g:sales:r /project/report.docx
- 設定を確認
$ getfacl /project/report.docx
- 動作確認
- 該当ユーザーでファイルアクセスを試す。
RBACを設定する手順(Ubuntu)
- 役割に対応するグループを作成
$ sudo groupadd editors
- グループにユーザーを追加
$ sudo usermod -aG editors bob
- グループに対してファイルやサービスの権限設定を行う
- テストユーザーでログインして動作確認
6. まとめ
- Ubuntu環境ではACLとRBACの両方を活用して、柔軟でセキュアなアクセス管理が可能です。
- 小規模ならACL、大規模組織運用ならRBACを基本に設計しましょう。
- ハイブリッドに使い分けることで、より強力なアクセス制御が実現できます。
正しいアクセス制御設計は、Ubuntuシステム運用の基盤になります。基本をしっかり押さえ、安全な運用を目指しましょう!

大阪のエンジニアが書いているブログ。
コメント