我正在研究 ACL,但對這些資訊在技術上的位置感到困惑。從技術上講,這只是來自 inode 的元資料嗎?
答案1
確切的細節可能取決於檔案系統,但從概念上講,ACL 是儲存在檔案 inode 中的元數據,就像傳統的權限、日期等一樣。
由於 ACL 的大小可能會有所不同,因此它們最終可能會儲存在單獨的區塊中。然而,只有當您設計檔案系統或編寫檔案系統驅動程式時,細節才重要。
答案2
對於 Ext4:
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Extended_Attributes
“擴充屬性 (xattrs) 通常儲存在磁碟上的單獨資料區塊中,並透過 inode.i_file_acl* 從 inode 引用。”
答案3
看看擴充屬性本文的部分,標題為:Linux 上的 POSIX 存取控制列表。
摘抄
ACL 是與檔案系統物件關聯的可變長度的資訊片段。可以設計在檔案系統上儲存 ACL 的專用策略,就像 Solaris 在 UFS 檔案系統上所做的那樣 [13]。 UFS 檔案系統上的每個 inode 都有一個名為 i_shadow 的欄位。如果 inode 有 ACL,則該欄位指向影子 inode。在檔案系統上,影子 inode 的使用方式與常規檔案類似。每個影子 inode 都在其資料塊中儲存一個 ACL。具有相同 ACL 的多個檔案可能指向相同的影子 inode。
由於除了ACL 之外,其他核心和使用者空間擴充也受益於能夠將資訊片段與檔案關聯起來,因此Linux 和大多數其他類別UNIX 作業系統實現了一種更通用的機制,稱為擴充屬性(EA) 。在這些系統上,ACL 實作為 EA。
之後擴充屬性本章詳細介紹了各種檔案系統、ext2/ext3、JFS 等如何實作 EA。