擴展文件屬性檢視原始碼討論檢視歷史
擴展文件屬性 |
---|
|
擴展文件屬性是文件系統的一個功能。它允許用戶將計算機文件與未被文件系統所解釋的元數據關聯起來。與之相對應的是正規文件屬性,其具有經文件系統嚴格定義的意義(例如文件系統權限或者文件創建以及修改時間等)。[1]
與通常能具有最大文件大小的forks不同,擴展文件屬性通常被限制為遠小於最大文件大小。其典型應用包括存儲文檔作者、普通文本文件的字符編碼或者校驗碼。
OS/2
在1.2及以後的OS/2版本中,出現了帶有擴展屬性的高性能文件系統構想的設計,並且DOS的FAT文件系統對其向後兼容。為了確保與其他使用FAT文件系統的操作系統兼容,OS/2屬性保存在根(root)路徑下的一個"EA DATA. SF"文件中。當支持擴展屬性的操作系統管理磁盤時,該文件通常是不可見的,然而可以自由地被例如DOS的系統操作。帶有擴展屬性的文件或目錄在文件內使用一個或多個簇。首次使用的簇的邏輯編號以兩個先前未使用字節的方式保存在該文件或路徑的路徑條目里。這兩個字節在FAT32文件系統中另有他用,因此OS/2擴展屬性不能保存在FAT32文件系統中。
為了實現例如識別文件的類型、注釋、圖標和關鍵字的功能,2.0及之後的OS/2版本例如工場外殼的部分使用一些標準化的擴展屬性(也被稱作EA)。使用解釋性語言REXX編寫的程序將已經解析過的代碼版本作為擴展屬性保存以獲得更快的運行速度。
Windows NT
如同OS/2,Windows NT支持FAT和HPFS文件系統的擴展屬性。NTFS文件系統作為一種可能的文件分支,為了兼容OS/2子系統,也被設計用於存儲擴展屬性。OS/2拓展屬性可以被任何與原生OS/2方式相同的OS/2程序和通過BackupRead及BackupWrite系統調用的Windows程序訪問。它們被顯著用於Interix之POSIX子系統的網絡文件系統服務器上,以實現類似於Unix的權限許可。
Linux
在Linux操作系統中,如果libattr功能在內核設置中被打開,ext2、ext3、ext4、JFS、ReiserFS以及XFS文件系統都支持擴展屬性(英文簡寫為xattr)。任何一個普通文件都可能包含有一系列的擴展屬性。每一個屬性由一個名字以及與之相關聯的數據所表示。其中名字必須為一個字符串,並且必須有一個命名空間前綴標識符與一個點字符。目前存在有四種命名空間:用戶命名空間、信任命名空間、安全命名空間以及系統命名空間。用戶命名空間在命名或者內容上沒有任何限制。系統命名空間主要被內核用於訪問控制表上。安全命名空間被SELinux等模塊使用。
FreeBSD
在FreeBSD5.0以及更新的版本中,UFS1與UFS2文件系統支持擴展屬性。每一個屬性由一個名字及與之相關聯的數據表示。其中名字必須為一個字符串,並且必須存在於一個由小整數命名空間標識符所標識的命名空間內。當前存在有兩種命名空間:用戶命名空間與系統命名空間。用戶命名空間對命名與內容沒有任何約束。系統命名空間主要被內核用於訪問控制表中。