【 getfacl 】コマンド――ファイルのアクセス制御リスト(ACL)を表示する:Linux基本コマンドTips(233)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルやディレクトリのアクセス制御リスト(ACL)を表示する「getfacl」コマンドです。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルやディレクトリのアクセス制御リストを表示する「getfacl」コマンドです。
getfaclコマンドとは?
「getfacl」(get file access control lists)は、ファイルやディレクトリのアクセス制御リスト(ACL)を表示するコマンドです。
ACLが有効になっているファイルシステムの場合、通常のファイルアクセス制御に加えて、特定のユーザーやグループに対してファイルごとのアクセス制限が可能になります。
なお、通常のファイルアクセス制御は、「所有者」「グループ」「その他」に対して、それぞれ「読み出し」「書き込み」「実行」の可否を設定します。設定内容は、「ls -l」(連載第26回)や、「stat」(第122回)で確認できます。
なお、ACLを設定するには、「setfacl」コマンド(第234回)を使います。ACLが設定されている場合、「ls -l」を実行すると9桁のパーミッション表示の後に「+」記号を表示します。
getfaclコマンドの書式
getfacl [オプション] ファイル名……
※[ ]は省略可能な引数を示しています
getfaclの主なオプション
短いオプション | 長いオプション | 意味 |
---|---|---|
-a | --access | ファイルACLだけを表示する |
-d | --default | デフォルトACLだけを表示する |
-c | --omit-header | コメントヘッダ(冒頭の3行)を表示しない |
-e | --all-effective | 実効権がACLエントリで定義された権利と同じ場合も、実効権のコメントを全て表示する(本文を参照) |
-E | --no-effective | 実効権のコメントを表示しない |
-s | --skip-base | 基本ACLエントリ(所有者、グループ、その他)しか持たないファイルをスキップさせる |
-R | --recursive | ディレクトリを再帰的に表示する |
-L | --logical | シンボリックリンクをたどる |
-P | --physical | シンボリックリンクをたどらない(-Rと同時に指定) |
-t | --tabular | タブ区切りのフォーマットで出力する |
-n | --numeric | ユーザーIDとグループIDで出力する |
-p | --absolute-names | 先頭の「/」を取り除かない |
-- | オプションの終わりを示す(これ以降の指定は全てファイル名として扱う) |
ACLを表示する
「getfacl ファイル名」で指定したファイルのACLを表示します。
getfaclを実行すると、まず、ファイル名と所有者、グループをコメントヘッダの形で表示します。続いて、ユーザーに対する許可、グループに対する許可、その他に対する許可を表示します。
例えば「user::rw-」であれば、「所有者には、読み("R"eadable)、書き("W"ritable)が可能で、実行(executable)は許可されていない」という意味です。
画面1ではtest1.txtに「user:penguin:rw-」と表示されています。これは、ユーザー「penguin」に対し「rw-」が設定されているという意味です。
同じように、グループに対する許可は「group:」、その他に対する許可は「other:」で表示します。
この他、ACLマスクを設定した場合は「mask:」に続いて値を表示し、デフォルトACLが設定されている場合は「default:」を表示します(※1)。
※1 ACLは親ディレクトリから継承できる。ディレクトリに対してデフォルトACLを設定することで、ディレクトリ内のファイルに値を継承させたことになる。なお、デフォルトACLは「setfacl -m default:〜」のように設定する(第234回を参照)。
コマンド実行例
getfacl ファイル名
(指定したファイルのACLを表示する)
getfacl test1.txt
(test1.txtのACLを表示する)
ACLと実効権を表示する
「ファイルに対して与える最大のパーミッション(アクセス権)」として「マスク」(ACLマスク)と呼ばれる値をあらかじめ設定できます。
ACLマスクに「r」が設定されている場合、ACLを設定するsetfaclコマンドで「rw」を与えても「r」しか許可されません。このような実際に許可されるアクセス権を「実効権」(effective right)と呼びます。
ファイルに設定したACLとマスクによる制限が異なる場合、getfaclコマンドはACLに続いて「#effective:〜」として、実効権を表示します(画面2)。
ACLの設定と実効権が一致している場合、getfaclコマンドは実効権を表示しません。なお「-e」オプションを付けると、常に実効権を表示します(画面3)。
コマンド実行例
getfacl -e ファイル名
(実効権を常に表示する)
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.