web-dev-qa-db-ja.com

ACLとプレーンな古い権限

たくさんの記事を読んだのですが、それでもACLがわからないので、次の質問があります。

  1. 古い権限(たとえば0777)よりもACLを使用し、ファイルの所有者、グループなどを変更することの利点は何ですか? (私が推測するのは、複数のユーザーが1つのファイルに対して異なるアクセス許可を持つことができるのは1つだけです)
  2. ACLはどのように実装されていますか? iノードデータを使用していますか?
  3. 拡張属性(xattr)間に何らかの関係はありますか?
  4. VFSは拡張属性をサポートしていますか?または、これはFS固有の `機能ですか?

これを理解するのを手伝ってください、多分これについていくつかの良い記事がありますか?
ありがとう

2
solderingiron

ACLを使用すると、複数の人と複数のグループに権限を付与できます。たとえば、SAチームとDBAチームがあります。SAにファイルへの「読み取り+書き込み」アクセスを許可したいのですが、DBAは読み取りアクセスしかできません。ファイルはグループの所有者が1人いると、これを行うのは困難ですが、ACLを使用すると簡単です。

ACLの実装はファイルシステム固有です。通常、それらはiノードに関連付けられています。例えば.

$ echo test > file
$ setfacl -m g:dbus:rw file
$ getfacl file 
# file: file
# owner: sweh
# group: sweh
user::rw-
group::r--
group:dbus:rw-
mask::rw-
other::r--

ここでは、ファイルに2つのグループ権限が設定されており、権限が異なっていることがわかります。

ファイル(異なるファイル名、同じiノード)間にハードリンクを作成して、結果を確認しましょう。

$ ln file file2
$ getfacl file2
# file: file2
# owner: sweh
# group: sweh
user::rw-
group::r--
group:dbus:rw-
mask::rw-
other::r--

そのため、ファイル間にハードリンクを作成すると、ACLは新しいファイル名で使用可能になり、ファイル名ではなくiノードに関連付けられていることを示します。

ACLは拡張属性とは異なりますが、xattrネームスペースに格納される場合があります。 xattr属性はファイルシステムに依存します。

3
Stephen Harris