Categories: linux

Linuxのアクセス制御を可視化!getfaclコマンドの使い方と活用法を徹底解説

Linuxのファイルやディレクトリに対するアクセス権を確認する際、一般的には「ls -l」コマンドを使います。ですが、より細かい権限管理を行うACL(アクセス制御リスト)を使用している場合、「ls -l」では情報が不十分なことも。そこで役立つのが「getfacl」コマンドです。本記事では、「getfacl」コマンドの基本的な使い方から、実践的な活用例までをわかりやすく解説します。ACLの仕組みや管理に興味がある方、Linuxの権限設定をもっと深く知りたい方におすすめの内容です。


getfaclコマンドとは?

「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::---

この出力からは、以下のことがわかります:

  • 所有者(user1)は読み書き可(rw-)
  • user2には読み取り権限のみ(r–)
  • グループのデフォルト権限は読み取りのみ(r–)
  • その他のユーザーにはアクセス権がない(—)

出力内容の意味を詳しく解説

出力に表示される各行の意味を順番に見ていきましょう。

  • # 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情報が表示され、複数ユーザーが関与するディレクトリ構成の管理に便利です。


getfaclの実用例

例1:特定ユーザーに読み取り権限のみ与えたファイルを確認

たとえば、社外の一時的な協力者にファイルの読み取りのみ許可したいとき、ACLを使ってそのユーザーだけに「r–」を付与します。設定後、getfaclで確認することで、意図した通りの権限が設定されているかどうかをチェックできます。

setfacl -m u:guestuser:r-- report.pdf
getfacl report.pdf

例2:共有ディレクトリに複数グループの書き込み権限を設定

ACLを使えば、複数のグループに同時に書き込み権限を設定することも可能です。getfaclを使えば、それぞれのグループに設定した内容が一目で分かります。

setfacl -m g:devteam:rwX shared/
setfacl -m g:marketing:rwX shared/
getfacl shared/

setfaclとの違いと組み合わせ

「getfacl」はあくまで「表示する」ためのコマンドです。実際にACLの設定や変更を行いたい場合は、「setfacl」コマンドを使います。

  • getfacl → 現在のACL設定を「確認」
  • setfacl → ACLを「設定・変更・削除」

両者はセットで使うことで、ACLの管理がスムーズになります。たとえば、ACLを設定した後には必ず「getfacl」で確認する、という流れを習慣にするのが望ましいです。


注意点と落とし穴

ACLは便利な反面、以下のような点に注意が必要です。

  • maskの存在を見落とさないこと:ACLを設定しても、maskによって実際の権限が制限される場合があります。
  • バックアップツールとの相性:一部のバックアップツールやファイルコピーコマンドはACL情報を保持しないことがあります(rsyncでは-Aオプションを使う必要あり)。
  • lsコマンドだけでは見えないls -lでは「+」が表示されるだけで詳細はわかりません。getfaclを使う習慣をつけましょう。

まとめ

「getfacl」コマンドは、Linuxのアクセス制御をより細かく確認できる非常に便利なツールです。複数ユーザー・グループが関与する環境では、ACLによる権限管理が求められる場面も多くあります。

ACLの設定は一見難しそうですが、getfaclを使って視覚的に確認することで理解が深まります。また、「setfacl」と組み合わせて使うことで、強力かつ柔軟な権限設定が可能になります。システム管理者や開発者の方はもちろん、Linuxに慣れてきた中級者の方にも、ぜひ一度試していただきたいコマンドです。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。