ACL データは技術的にはどこに保存されますか?

ACL データは技術的にはどこに保存されますか?

ACL を勉強しているのですが、この情報が技術的にどこに存在するのかよくわかりません。技術的には、これは単に inode からのメタデータなのでしょうか?

答え1

正確な詳細はファイルシステムによって異なる可能性がありますが、概念的には、ACL は従来の権限や日付などと同様に、ファイルの inode に保存されるメタデータです。

ACL のサイズは変化する可能性があるため、別々のブロックに保存される可能性があります。ただし、詳細は、ファイルシステムを設計する場合、またはファイルシステム ドライバーをプログラミングする場合にのみ重要です。

答え2

Ext4の場合:

https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#拡張属性

「拡張属性 (xattrs) は通常、ディスク上の別のデータ ブロックに保存され、inode.i_file_acl* を介して inode から参照されます。」

答え3

見てみましょう拡張属性この論文の次のセクション:Linux 上の POSIX アクセス制御リスト

抜粋

ACL は、ファイルシステムオブジェクトに関連付けられた可変長の情報です。Solaris が UFS ファイルシステムで行っているように、ファイルシステムに ACL を格納するための専用の戦略が考案される可能性があります [13]。UFS ファイルシステム上の各 inode には、i_shadow と呼ばれるフィールドがあります。inode に ACL がある場合、このフィールドはシャドウ inode を指します。ファイルシステムでは、シャドウ inode は通常のファイルのように使用されます。各シャドウ inode は、そのデータブロックに ACL を格納します。同じ ACL を持つ複数のファイルが同じシャドウ inode を指す場合があります。

ACL に加えて、他のカーネルお​​よびユーザー空間の拡張機能も、情報の一部をファイルに関連付けることができるという利点があるため、Linux および他のほとんどの UNIX 系オペレーティング システムでは、拡張属性 (EA) と呼ばれるより一般的なメカニズムを実装しています。これらのシステムでは、ACL は EA として実装されています。

後に拡張属性このセクションでは、ext2/ext3、JFS などのさまざまなファイル システムが EA を実装する方法の詳細について説明します。

関連情報