【 getfacl 】コマンド――ファイルのアクセス制御リスト(ACL)を表示する

https://atmarkit.itmedia.co.jp/ait/articles/1808/17/news026.html

【 getfacl 】コマンド――ファイルのアクセス制御リスト(ACL)を表示する
Linux基本コマンドTips(233)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルやディレクトリのアクセス制御リスト(ACL)を表示する「getfacl」コマンドです。
2018年08月17日 05時00分 公開
[西村めぐみ,@IT]

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルやディレクトリのアクセス制御リストを表示する「getfacl」コマンドです。

目次
getfaclコマンドの概要 | 書式 | オプション一覧

実行例
ACLを表示する
ACLと実効権を表示する
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を表示します。

クラウド/オンプレミスの混在環境を一元管理、近鉄グループに学ぶデータ管理術

Windows 10のアップデート問題、情シス部門の負担を軽減する秘策とは?

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を表示する)

画面1
画面1 ファイルのACLを表示したところ

目次に戻る

ACLと実効権を表示する
「ファイルに対して与える最大のパーミッション(アクセス権)」として「マスク」(ACLマスク)と呼ばれる値をあらかじめ設定できます。

ACLマスクに「r」が設定されている場合、ACLを設定するsetfaclコマンドで「rw」を与えても「r」しか許可されません。このような実際に許可されるアクセス権を「実効権」(effective right)と呼びます。

ファイルに設定したACLとマスクによる制限が異なる場合、getfaclコマンドはACLに続いて「#effective:~」として、実効権を表示します(画面2)。

画面2
画面2 ACLと実効権が表示されたところ
ACLの設定と実効権が一致している場合、getfaclコマンドは実効権を表示しません。なお「-e」オプションを付けると、常に実効権を表示します(画面3)。

コマンド実行例
getfacl -e ファイル名

(実効権を常に表示する)

画面3
画面3 強制的に実効権を表示したところ

目次に戻る

この連載を「連載記事アラート」に登録する
筆者紹介
西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。

 

コメント