Linuxのファイルやディレクトリに対するアクセス権を確認する際、一般的には「ls -l」コマンドを使います。ですが、より細かい権限管理を行うACL(アクセス制御リスト)を使用している場合、「ls -l」では情報が不十分なことも。そこで役立つのが「getfacl」コマンドです。本記事では、「getfacl」コマンドの基本的な使い方から、実践的な活用例までをわかりやすく解説します。ACLの仕組みや管理に興味がある方、Linuxの権限設定をもっと深く知りたい方におすすめの内容です。
「getfacl」は、LinuxやUnix系OSで使えるコマンドの一つで、ファイルやディレクトリに設定されているACL(Access Control List:アクセス制御リスト)を確認するために使用されます。標準的なパーミッション(rwx)では表現しきれない、複数ユーザーやグループに対して柔軟なアクセス権の設定ができるACLは、特に複雑な権限管理が必要なシステムで重宝されます。
getfacl
は、「ls -l」では見えない細かい情報、たとえばある特定のユーザーにだけ書き込み権限を与えているといった設定まで確認できるのが特徴です。
getfacl
の基本的な構文は以下の通りです。
getfacl [オプション] ファイル名またはディレクトリ名
たとえば、example.txt
というファイルのACL情報を確認するには、次のように入力します。
getfacl example.txt
出力の例:
# file: example.txt
# owner: user1
# group: user1
user::rw-
user:user2:r--
group::r--
mask::r--
other::---
この出力からは、以下のことがわかります:
出力に表示される各行の意味を順番に見ていきましょう。
# file:
:対象ファイル名# owner:
:ファイル所有者# group:
:ファイルのグループ所有者user::rw-
:所有者に対するアクセス権user:user2:r--
:user2に対する特別なアクセス権group::r--
:ファイルに設定されたグループのアクセス権mask::r--
:ACLで設定された最大許可値(ACLの中での最大値)other::---
:その他のすべてのユーザーへのアクセス権mask
が重要なのは、特定のACLエントリにアクセス権を与えても、このマスクの範囲を超えることはできないからです。
getfacl
はファイルだけでなく、ディレクトリにも使用できます。たとえば、ディレクトリdata/
に設定されたACLを確認するには次のようにします。
getfacl data/
また、-R
オプションを使うことで、ディレクトリ以下を再帰的に確認することも可能です。
getfacl -R data/
出力結果には、各ファイル・ディレクトリごとにACL情報が表示され、複数ユーザーが関与するディレクトリ構成の管理に便利です。
たとえば、社外の一時的な協力者にファイルの読み取りのみ許可したいとき、ACLを使ってそのユーザーだけに「r–」を付与します。設定後、getfacl
で確認することで、意図した通りの権限が設定されているかどうかをチェックできます。
setfacl -m u:guestuser:r-- report.pdf
getfacl report.pdf
ACLを使えば、複数のグループに同時に書き込み権限を設定することも可能です。getfacl
を使えば、それぞれのグループに設定した内容が一目で分かります。
setfacl -m g:devteam:rwX shared/
setfacl -m g:marketing:rwX shared/
getfacl shared/
「getfacl」はあくまで「表示する」ためのコマンドです。実際にACLの設定や変更を行いたい場合は、「setfacl」コマンドを使います。
getfacl
→ 現在のACL設定を「確認」setfacl
→ ACLを「設定・変更・削除」両者はセットで使うことで、ACLの管理がスムーズになります。たとえば、ACLを設定した後には必ず「getfacl」で確認する、という流れを習慣にするのが望ましいです。
ACLは便利な反面、以下のような点に注意が必要です。
-A
オプションを使う必要あり)。ls -l
では「+」が表示されるだけで詳細はわかりません。getfacl
を使う習慣をつけましょう。「getfacl」コマンドは、Linuxのアクセス制御をより細かく確認できる非常に便利なツールです。複数ユーザー・グループが関与する環境では、ACLによる権限管理が求められる場面も多くあります。
ACLの設定は一見難しそうですが、getfacl
を使って視覚的に確認することで理解が深まります。また、「setfacl」と組み合わせて使うことで、強力かつ柔軟な権限設定が可能になります。システム管理者や開発者の方はもちろん、Linuxに慣れてきた中級者の方にも、ぜひ一度試していただきたいコマンドです。