FlossDoc: 請協力 GPLv3 的中文翻譯工作。

改變 NTFS 檔案的屬性

FlossDoc,自由中文開源知識庫

Jump to: navigation, search

使用 getfattr/setfattr 改變檔案唯讀/隱藏/系統等屬性

NTFS 中每一個檔案仍有類似 FAT 的檔案屬性:

屬性 值 (little-endian) 用途
唯讀 (r, Read-only) 0x00000001 0x01000000 檔案只可以被讀取而不能被寫入或刪除。
隱藏 (h, Hidden) 0x00000002 0x02000000 Windows/MS-DOS 系統預設不會列出此檔案。
系統 (s, System) 0x00000004 0x04000000 檔案為系統檔案 (system file),Windows/MS-DOS 系統預設不會列出此檔案。
卷宗標簽 (v, Volume Label) 0x00000008 0x08000000 表示有關檔案項目實際為一個 volume label (不可以更變屬性),系統會略過此項目。
目錄 (d, Directory) 0x00000010 0x10000000 表示有關檔案項目實際為一個子目錄 (不可以更變屬性)。
封存 (a, Archive) 0x00000020 0x20000000 檔案需要被封存。FAT 檔案系統上的一般檔案預設會開啟封存屬性,當檔案被 XCOPY 等命令備份後,其封存屬性會被關閉,直至檔案內容被更改時才再開啟封存屬性。這樣,XCOPY 等命令可以使用封存屬性判斷檔案在上次備份後內容是否有被改動,這次是否需要備份。
暫存 (Tempopary) 0x00000100 0x00010000
壓縮目錄 (Compressed) 0x00000800 0x00080000
離線 (Offline) 0x00001000 0x00100000
Not Content Indexed 0x00002000 0x00200000

要在 GNU/Linux 上改變 NTFS 中檔案的屬性可以使用擴充屬性 (Extended Attributes)。系統管理先要安裝套件 attr。

使用命令 getfattr -h -e hex -n system.ntfs_attrib 檔案名稱 可以顯示 NTFS 檔案的屬性:

# getfattr -h -e hex -n system.ntfs_attrib "/media/Win7/Users/John Doe/Desktop/Hello.txt"
 system.ntfs_attrib=0x20000000

上例表示 Hello.txt 檔案只開啟了封存屬性 (archive attribute, 0x00000002)。

使用命令 setfattr -h -v 屬性值 -n system.ntfs_attrib 檔案名稱 可以顯示 NTFS 檔案的屬性:

# setfattr -h -v 0x21000000 -n system.ntfs_attrib "/media/Win7/Users/John Doe/Desktop/Hello.txt"

上例把 Hello.txt 設定開啟唯讀 (read-only, 0x00000001) 和封存 (archive, 0x00000002) 屬性。

ntfs-3g-2010.5.22AC.5 開始支援擴充屬性 system.ntfs_attrib_be 自動轉換 little-endian 至 big-endian:

# getfattr -h -e hex -n system.ntfs_attrib_be "/media/Win7/Users/John Doe/Desktop/Hello.txt"
 system.ntfs_attrib=0x00000002
# setfattr -h -v 0x00000021 -n system.ntfs_attrib_be "/media/Win7/Users/John Doe/Desktop/Hello.txt"
#

請參看

外部連結

Personal tools