chattr [-RVf] [-v version] [mode] files…
chattr修改文件在Linux第二擴展文件系統(E2fs)上的特有屬性。符號模式(mode)有+-=[aAcCdDeijsStTu]。
操作符+用來增加選定的屬性;-用來撤消選定的屬性;=用來指定文件的唯一屬性。字母’aAcCdDeijsStTu’選擇文件的新屬性:僅附加(a),不更新atime(A),壓縮(c),不受寫時拷貝影響(C),沒有轉儲(d),同步目錄更新(D),擴展格式(e),不可變(i),數據日志(j),安全刪除(s),同步更新(S),不支持尾部合並(t),目錄層次結構(T)和不可刪除(u)。
以下屬性是只讀的,可以由lsattr(1)列出,但不能通過chattr修改:壓縮錯誤(E),大文件(h),索引目錄(l),內聯數據(N),壓縮原始訪問(X),壓縮臟文件(Z)。
並非所有文件系統都支持或使用所有標志;有關特定於文件系統的詳細信息,請參閱特定於文件系統的手冊頁,例如btrfs(5),ext4(5)和xfs(5)。
(1).選項
-R 以遞歸方式修改目錄及其下內容屬性 -V 詳盡給出chattr的輸出信息,並打印出程序版本 -f 不列出大多數錯誤信息 -v version 設置文件系統的版本
(2).屬性
具有a屬性集的文件只能在追加模式下打開以進入寫入。只有超級用戶或具有CAP_LINUX_IMMUTABLE功能的進程才能進行設置或清楚此屬性。
訪問具有A屬性集的文件時,不會修改其atime記錄。這可以避免筆記本電腦系統的一定數量的磁盤I/O。
設置了c屬性的文件由內核自動壓縮到磁盤上。從此文件讀取將返回未壓縮的數據,寫入文件會先壓縮數據再將數據存儲到磁盤。注意:請務必了解(3).缺陷與限制
設置了C屬性的文件不會受寫時拷貝更新的影響。僅在執行寫時拷貝的文件系統上支持此標志。注意:對於dtrfs,應該在新文件或空文件上設置C標志。如果在已有數據塊的文件上設置它,則當分配給文件的塊完全穩定時,它是未定義的(?)。C標志在目錄上設置,它對目錄沒有影響,但在該目錄下中創建的新文件將是No_COW屬性。
設置了d屬性的文件不能對其運行dump(8)程序進行備份。
當修改了設置D屬性的目錄時,會在磁盤上同步寫入更改;這相當於已用與文件子集的’dirsync’掛載選項。
e屬性表示該文件正在使用擴展區來映射磁盤上的塊。可能無法使用chattr(1)刪除它。
實驗性壓縮補丁使用E屬性來指示壓縮文件具有壓縮錯誤。它可能不會使用chattr(1)設置或重置,盡管它可以lsattr(1)顯示。
h屬性表示文件以文件系統塊大小為單位而不是以扇區為單位存儲塊,並且意味着該文件(或一次)大於2TB。它可能不會使用chattr(1)設置或重置,盡管它可以由lsattr顯示。
無法修改具有i屬性的文件:無法刪除或重命名文件,無法為此文件創建鏈接,也無法將數據寫入文件。只有超級用戶或擁有CAP_LINUX_IMMUTABLE功能的進程才能設置或清除此屬性。
Htree代碼使用I屬性來指示使用散列樹索引目錄。它可能不會使用chattr(1)設置或重置,盡管它可以由lsattr(1)顯示。
如果文件系統使用”data=ordered”或”data=writeback”選項掛載,則具有j屬性的文件會在寫入文件本身之前將其所有數據寫入ext3或ext4日志。當使用”data=journal”選項掛載文件系統時,所有文件數據都已記錄,並且此屬性不起作用。只有超級用戶或擁有CAP_SYS_RESOURCE功能的進程才能設置或清除此屬性。
設置了N屬性的文件表示該文件在inode本身內具有內聯存儲的數據。它不能使用chattr(1)設置或重置,盡管它可以由lsattr(1)顯示。
刪除具有s屬性集的文件時,其塊將歸零並寫入磁盤。注意:請務必了解(3).缺陷與限制
修改具有S屬性集的文件時,會在磁盤上同步寫入更改;這相當於應用於文件子集的’sync’掛載選項。
具有t屬性的文件在文件末尾將沒有與其他文件合並生成的部分塊片段(對於那些支持尾部合並的文件系統)。這對於例如LILO這種直接讀取文件系統和不能理解合並文件的應用程序是必要的。注意:在本文中(此時系統是CentOS7.2),ext2和ext3文件系統不支持尾部合並。
對於Orlov塊分配器,具有T屬性的目錄將被視為目錄層次結構頂層。這是對於ext3和ext4使用的塊分配器的一個提示,表明該目錄下的子目錄不相關,因此為了分配的目的應該分開。例如,在/home目錄中設置T屬性是一個非常好的主意,以便/home/john和/home/mary被放置在單獨的塊組中。對於未設置此屬性的目錄,Orlov塊分配器將盡可能將子目錄分組在一起。
當具有u屬性集的文件被刪除時,其內容被保留。這允許用戶請求回復刪除。注意:請務必了解(3).缺陷與限制
實驗壓縮補丁使用X屬性來指示可以直接訪問壓縮文件的原始內容。它目前可能使用chattr(1)來設置或重置,盡管它可以由lsattr(1)顯示。
實驗壓縮補丁使用Z屬性來指示壓縮文件是臟的。它可能不會使用chattr(1)設置或重置,盡管它可以由lsattr(1)顯示。
(3).缺陷與限制
在當前主流Linux內核中實現的ext2、ext3和ext4文件系統不遵循c,s,u屬性。
j選項僅在文件系統掛載在ext3或ext4時才有用。
D選項僅在Linux內核2.5.19及以上版本才有用。
(4).實例
創建一個root用戶都無法刪除的文件
[root@xuexi ~]# touch 1 [root@xuexi ~]# ll 1 -rw-r--r--. 1 root root 0 1月 9 13:21 1 [root@xuexi ~]# lsattr 1 ---------------- 1 [root@xuexi ~]# chattr +i 1 [root@xuexi ~]# ll 1 -rw-r--r--. 1 root root 0 1月 9 13:21 1 [root@xuexi ~]# lsattr 1 ----i----------- 1 [root@xuexi ~]# rm -rf 1 rm: 無法刪除"1": 不允許的操作
如果想要刪除必須使用命令將第二文件系統的特有屬性i去除
[root@xuexi ~]# chattr -i 1 [root@xuexi ~]# ll 1 -rw-r--r--. 1 root root 0 1月 9 13:21 1 [root@xuexi ~]# lsattr 1 ---------------- 1 [root@xuexi ~]# rm 1 rm:是否刪除普通空文件 "1"?y
(5).擴展
查看第二文件系統的屬性lsattr [-RVadv] [files]
-R 遞歸目錄及其下內容的屬性
-V 顯示程序版本
-a 列出所有,包括.開頭的文件屬性
-d 列出目錄屬性,而不是其下內容屬性
-v 顯示文件版本