Linux

xattr 和 chattr 的區別

  • March 17, 2014

和 之間的關係和區別是xattr什麼chattr?我想知道當我chattr在 Linux 中設置屬性時,Linux 核心和 inode 元數據中發生了什麼。

lsattrLinux 上由/處理的屬性chattr,其中一些可以由相當多的文件系統(ext2/3/4、reiserfs、JFS、OCFS2、btrfs、XFS、nilfs2、hfsplus…)儲存,甚至可以通過 CIFS 查詢/SMB(使用 POSIX 擴展時)是標誌。只有位才能打開或關閉以禁用或啟用屬性(如不可變存檔……)。它們的儲存方式是特定於文件系統的,但通常作為 inode 中的 16/32/64 位記錄。

完整的標誌列表可以在 Linux 本機文件系統(ext2/3/4,btrfs…)上找到,儘管並非所有標誌都適用於所有 FS,對於其他非本機 FS,Linux 嘗試將它們映射到等效相應文件系統中的功能。例如,OSX 在 HFS+ 文件系統上儲存的simmutable標誌映射到 Linux 中相應的不可變標誌chattr。什麼文件系統支持什麼標誌幾乎沒有記錄。通常,閱讀核心原始碼是唯一的選擇。

另一方面,使用setfattrattr在 Linux 上設置的擴展屬性不僅僅儲存標誌。它們也附加到文件中,並且是鍵/值對,可以是(鍵和值)任意字節數組(儘管在某些文件系統上存在大小限制)。

例如,密鑰可以是:system.posix_acl_accessuser.rsync.%stat。命名空間是為系統保留的system(您不會使用 更改 POSIX ACL setfattr,但更多的是setfacl,POSIX ACL 恰好至少在某些文件系統上儲存為擴展屬性),而user命名空間可由應用程序使用(此處rsync使用它作為--fake-super選項,當您不是超級使用者時儲存有關所有權或權限的資訊)。

同樣,它們的儲存方式是特定於文件系統的。有關詳細資訊,請參閱維基百科。

引用自:https://unix.stackexchange.com/questions/120036