321.2 拡張属性とACL

2021-06-21

321.2 拡張属性とACL

重要度 5
説明 拡張属性とアクセス制御リストの使用方法を理解して、知っていることが要求される。
主要な知識範囲

  • ACL
  • EA 及び属性クラス

重要なファイル、用語、ユーティリティ

  • getfacl
  • setfacl
  • getfattr
  • setfattr

ACLとは

ACLとは、アクセス制御リスト(アクセスせいぎょリスト、Access Control List、ACL)とは、オブジェクト(受動体)に付属する許可属性のリスト。
ファイル/ディレクトリに対する[所有者/グループ/第三者]と[読み取り/書き込み/実行]の許可をより細かく設定できます。
例えば、ファイル X についてのアクセス制御リストに要素 (Alice, delete) があれば、Alice はファイル X を削除することができる。

getfacl

ファイルのアクセス制御リスト (access control list) を取得する。
各ファイルについて、getfacl はファイル名・所有者・グループ・ アクセス制御リスト (ACL) を表示する。
ディレクトリがデフォルト ACL を持つ場合、 getfacl はデフォルト ACL も表示する。 ディレクトリ以外はデフォルト ACL を持つことができない。

書式
getfacl [オプション]
getfacl [オプション] ファイル名
[]は省略可能。

主なオプション

-a または –access ACLを表示する
-d または –default デフォルトACLを表示する
-R または –recursive 全てのファイルとディレクトリのACLを再帰的に一覧表示

test/test.log のACLを表示する

# getfacl test/test.log
# file: test/test.log
# owner: test02
# group: test02
user::rw-
user:test01:rw-
group::r--
mask::rw-
other::r--

testディレクトリのACLを再帰的に表示する

# getfacl -R test/
# file: test/
# owner: test02
# group: test02
user::rwx
group::r-x
other::r-x

# file: test//test.log
# owner: test02
# group: test02
user::rw-
user:test01:rw-
group::r--
mask::rw-
other::r--

setfacl

ファイルのアクセス制御リスト (access control list) を設定する

書式
setfacl [オプション] ファイル名
[]は省略可能。

主なオプション

-b または –remove-all 全てのACLの拡張指定を削除
-d または –default ACL指定を適用
–mask ACLが明示的に指定されている場合でも、実行権マスクを再計算する
-m [権限] 指定した権限をACLの設定を変更
-M [ファイル名] ACLの設定を指定したファイルから読み込み変更
-n, –no-mask 実行マスクを再計算しない
-R 全てのファイルとディレクトリに対して再帰的に操作を適用する
-x [権限] ACLの設定から指定した権限を削除
-X [ファイル名] ACLの設定を指定したファイルから読み込み削除


ファイル「test.log」に、ユーザー「test01」のアクセス権限(rw)のACLを設定する

# setfacl -m u:test01:rw test.log

ファイル「test.log」に設定済みのユーザー「test01」に対するアクセス権限を消去する

# setfacl -x u:test01 test.log

ファイル「test.log」からACLを全消去する

# setfacl -b test.log

拡張属性

通常のファイル属性は、ファイル名やパーミッション、更新日時などの基本属性です。
それに対して拡張属性(EA:Extended Attribute)には、基本的なファイル属性が持たない情報を設定できます。
拡張属性には、user[C], trusted[b], security[D], system[A] という名前空間があります

getfattr

ファイルの拡張属性を表示するコマンド

書式
getfattr [オプション] パス
[]は省略可能。

主なオプション

-n [拡張属性] または –name [拡張属性] 指定した拡張属性の名前の値を表示する
-d または –dump 指定したパスに関連付けらえている拡張属性の値を全て表示する

setfattr

ファイルの拡張属性を設定するコマンド

書式
setfattr [オプション] パス
setfattr [オプション] –restore ファイル名
[]は省略可能。

主なオプション

-n [名前] または –name [名前] 設定した拡張属性の名前を指定
-v [値] または –value [値] 拡張属性の値を指定
-x [名前] または -remove [名前] 指定した拡張属性を削除


ファイル「test.log」に、名前「user.test」の値「test_val」の拡張属性を設定する

# setfattr -n user.test -v test_val test.log
# getfattr test.log
# file: test.log
user.test

ファイル「test.log」に、名前「user.test」の値「test_val」の拡張属性を設定する

# setfattr -x user.test test.log
# getfattr test.log

※ 拡張属性が設定されていない場合は、getfattrコマンドを実行しても何も表示されません

LPIC 30xLPIC303

Posted by admin