連載
» 2018年08月03日 05時00分 公開

Linux基本コマンドTips(229):【 getfattr 】コマンド――ファイルの拡張属性を表示する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルの拡張属性を表示する「getfattr」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルの拡張属性を表示する「getfattr」コマンドです。

getfattrコマンドとは?

 「getfattr」は、ファイルの拡張属性を表示するコマンドです(※1)。

 ファイルには、所有者やタイムスタンプ、パーミッションなどの属性があります。Linuxに限らず、さまざまなファイルシステムが共通に備える属性です。

 これに対し、ユーザーが自由に追加できる属性を拡張属性(extended attribute)と呼びます。Linux環境で最もなじみ深い拡張属性は恐らくSELinuxのセキュリティコンテキストでしょう(※2)。

 なお、ファイルに拡張属性を設定したり、拡張属性を削除したりするにはsetfattrコマンド(第230回)を使います。

※1 getfattrコマンドはattrパッケージに含まれている。Ubuntu 18.04 LTSのようにattrパッケージをデフォルトで含んでいない場合は、aptコマンド(連載第139回)を用いて「sudo apt install attr」としてパッケージを導入する。
※2 SELinux(Security-Enhanced Linux)とは、強制アクセス制御(Mandatory Access Control)を加えたLinuxのカーネルモジュールとその機能をいう。SELinuxを有効にすると、通常のファイルシステムよりも高度なアクセス制御機能を使用できる。lsコマンドでSELinuxのセキュリティコンテキストを表示するには「-Z」オプションを使用する。





getfattrコマンドの書式

getfattr [オプション] ファイル

※[ ]は省略可能な引数を示しています





getfattrの主なオプション

短いオプション 長いオプション 意味
-d --dump 全ての「名前空間識別子.拡張属性」について値を出力する(※3)
-n 名前 --name=文字列 指定した「名前空間識別子.拡張属性」の値を出力する
-m パターン --match=パターン 「名前空間識別子.拡張属性」の文字列のうち、パターンにマッチしたものを表示する(さらに値も表示したい場合は「-d」を先に記述して併用)
-e 書式 --encoding=書式 値の書式を「text」「hex」「base64」のいずれかで指定する
--only-values 値だけを出力する(改行コードは出力しない)
-h --no-dereference シンボリックリンクをたどらない
--absolute-names 絶対パスを使用(ファイル名から先頭の「/」を取り除かない)
-R --recursive ディレクトリ指定時に必要(サブディレクトリを再帰的に対象とする)
-P --physical ディレクトリ指定時、シンボリックリンクをたどらない(-Rを併用)
-L --logical ディレクトリ指定時、シンボリックリンクをたどる(デフォルト、-Rを併用)

※3 名前空間識別子については本文を参照





ファイルの拡張属性を表示する

 「getfattr ファイル名」で、ファイルの拡張属性を表示します(画面1)。

 ファイル名の代わりにディレクトリを指定する場合、「-R」オプションを付けて指定します。「-R」はディレクトリ内を再帰的に参照します。

 なお、拡張属性を設定していないファイルを指定した場合、何も表示しません。

コマンド実行例

getfattr ファイル名

(ファイルの拡張属性を表示する)

getfattr test1.txt test2.txt

(test1.txtとtest2.txtの拡張属性を表示する)(画面1


画面1 画面1 2つのファイルの拡張属性を表示したところ


名前空間と拡張属性を調べる

 Linuxでは拡張属性の管理のために名前空間を使っています。それぞれの名前空間を区別する名前を名前空間識別子と呼び、以下のような名前空間識別子があります。

 getfattrコマンドで名前空間識別子や拡張属性を扱う際には、「名前空間識別子.拡張属性の名前="値"」という形式を採ります。

名前空間識別子 用途
system カーネルが使用
security 主にSELinuxが使用
trusted 信頼されるプロセスが使用
user ユーザー用(自由に定義して使用できる)

 デフォルトで表示対象となるのは「user」名前空間のみです。他の名前空間の拡張属性を表示したい場合は、「-n」オプションや「-m」オプションを使用します(画面2)。

 「-n」オプションでは、「名前空間識別子.拡張属性」を指定します。例えば、SELinuxのセキュリティコンテキストを表示したい場合は「-n security.selinux」のように指定します。

 「-m」オプションは、「名前空間識別子.拡張属性」を正規表現のパターンで指定します。パターンとして「-」を指定すると、全ての名前空間にある全ての拡張属性を表示します。

 「-m」オプション単独の場合、指定したパターンに該当する拡張属性の名前だけを表示します。値も一緒に表示したい場合は「-m」の前に「-d」オプションを指定します。

コマンド実行例

getfattr -n 名前空間識別子.拡張属性 ファイル

(指定した名前空間識別子.拡張属性に当てはまるファイルと拡張属性の値を出力する)

getfattr -n security.selinux ファイル

(「security.selinux」つまりSELinuxのセキュリティコンテキストの値を表示する)

getfattr -m パターン ファイル

(指定したパターンに合致する名前空間識別子.拡張属性を表示する)

getfattr -m - ファイル

(全ての名前空間識別子.拡張属性を表示する)

getfattr -d -m - ファイル

(全ての名前空間識別子.拡張属性と値を表示する)


画面2 画面2 user名前空間以外の拡張属性の名前や値を表示したところ


【訂正:2018年8月6日午前11時30分】getfattrの主なオプションについて初出時、「-e 書式」で「(デフォルトはtext)」とありましたが、正しくはこの注釈は不要でした。お詫びして訂正いたします。上記記事は既に修正済みです(編集部)。

筆者紹介

西村 めぐみ(にしむら めぐみ)

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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。