linux檔案擴充套件屬性

2021-09-24 13:20:50 字數 1368 閱讀 6576

擴充套件屬性(xattrs)提供了乙個機制用來將《鍵/值》對永久地關聯到檔案,讓現有的檔案系統得以支援在原始設計中未提供的功能。擴充套件屬性是檔案系統不可知論者,應用程式可以通過乙個標準的介面來操縱他們,此介面不因檔案系統而異。每個擴充套件屬性可以通過唯一的鍵來區分,鍵的內容必須是有效的utf-8,格式為namespace.attribute,每個鍵採用完全限定的形式。

需要注意的是這裡的值可以是任意位元組的陣列,未必是字元存,而且最後可能不是null,這樣在訪問的時候必須知道值的大小。在設定的時候當然也就需要設定值大小。

乙個擴充套件屬性的用處:gui的檔案管理程式的行為根據檔案型別而異。要判斷檔案的格式,winodws之類的作業系統僅需要檢視檔案的副檔名就可以了,而unix系統往往需要檢視檔案的內容來判斷型別。有些檔案管理程式會直接產生此資訊,有些則會將產生的資訊快取起來以備下次使用。乙個更好的做法就是將此類元資料存入擴充套件屬性。

linux下定義的4種擴充套件屬性命名空間:

system:用於實現利用擴充套件屬性的核心功能,例如訪問控制表。eg:system.posix_acl_access便是位於此使用者空間的擴充套件

屬性,使用者是否可以讀取或寫入這些屬性取決於所使用的安全模組

security:用於實現安全模組

trusted:把受限制的資訊存入使用者空間

user: 一般程序所使用的標準命名空間,經過一般檔案許可權位來控制此命名空間的訪問

下面是一些使用擴充套件屬性的常用命令:

建立檔案

touch hello.txt
設定擴充套件屬性aaa=1111

setfattr -n user.aaa -v 1111 hello.txt
檢視擴充套件屬性

getfattr -n user.aaa hello.txt
刪除擴充套件屬性

setfattr -x user.aaa hello.txt
列出所有擴充套件屬性

attr -lq hello.txt
其中

-n 表示屬性名稱,表示取出該屬性的資料內容。若是都沒指定引數只有接檔名,會列出所有設定上去的屬性名稱列表。

-v 後面接屬性的儲存內容。

-x 表示刪除該屬性資料。

注意:name 一定是要以 user. 開頭專案 (為namespace,一般稱呼為命名空間),要不然執行期會出現 operation not supported 錯誤。

檔案擴充套件屬性

擴充套件屬性ea,既以名稱 值對形式將任意元資料與檔案i 節點關聯起來的技術 在shell中操作 root bogon code setfattr n user.x v this is first linux root bogon code setfattr n user.y v this is f...

HOW TO 獲取檔案擴充套件屬性

author 水如煙 option strict offnamespace uiopublic class file 前期繫結的話需引用com microsoft shell controls and automation public shared function getdetails byva...

xdata擴充套件屬性 新增擴充套件屬性

新增擴充套件資料xdata commandmethod addxdata public void addxdata 獲取實體 entity ent entity tr.getobject prentres.objectid,openmode.forwrite string codename xdat...