文件隐藏属性
命令1:chattr
[root@study ~]# chattr [+-=][ASacdistu] 檔案或目錄名稱 選項與參數:
+ :增加某一個特殊參數,其他原本存在參數則不動。
- :移除某一個特殊參數,其他原本存在參數則不動。
= :設定一定,且僅有後面接的參數
A :當設定了 A 這個屬性時,若你有存取此檔案(或目錄)時,他的存取時間 atime 將不會被修改,
可避免 I/O 較慢的機器過度的存取磁碟。(目前建議使用檔案系統掛載參數處理這個項目)
S :一般檔案是非同步寫入磁碟的(原理請參考前一章sync的說明),如果加上 S 這個屬性時,
當你進行任何檔案的修改,該更動會『同步』寫入磁碟中。
a :當設定 a 之後,這個檔案將只能增加資料,而不能刪除也不能修改資料,只有root 才能設定這屬性
c :這個屬性設定之後,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮,但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大檔案似乎蠻有用的!)
d :當 dump 程序被執行的時候,設定 d 屬性將可使該檔案(或目錄)不會被 dump 備份
i :這個 i 可就很厲害了!他可以讓一個檔案『不能被刪除、改名、設定連結也無法寫入或新增資料!』對於系統安全性有相當大的助益!只有 root 能設定此屬性
s :當檔案設定了 s 屬性時,如果這個檔案被刪除,他將會被完全的移除出這個硬碟空間,所以如果誤刪了,完全無法救回來了喔!
u :與 s 相反的,當使用 u 來設定檔案時,如果該檔案被刪除了,則資料內容其實還存在磁碟中,可以使用來救援該檔案喔!
注意1:屬性設定常見的是 a 與 i 的設定值,而且很多設定值必須要身為 root 才能設定
注意2:xfs 檔案系統僅支援 AadiS 而已 範例:請嘗試到/tmp底下建立檔案,並加入 i 的參數,嘗試刪除看看。
[root@study ~]# cd /tmp
[root@study tmp]# touch attrtest <==建立一個空檔案
[root@study tmp]# chattr +i attrtest <==給予 i 的屬性
[root@study tmp]# rm attrtest <==嘗試刪除看看
rm: remove regular empty file `attrtest\'? y rm: cannot remove `attrtest\': Operation not permitted
# 看到了嗎?呼呼!連 root 也沒有辦法將這個檔案刪除呢!趕緊解除設定!
範例:請將該檔案的 i 屬性取消!
[root@study tmp]# chattr -i attrtest
这个指令是很重要的,尤其是在系统的数据安全上面!
由于这些属性是隐藏的性质,所以需要以lsattr才能看到该属性呦!
其中,个人认为最重要的当属 +i 与 +a这个属性了。 +i 可以让一个档案无法被更动。对于需要强烈的系统安全的人来说, 真是相当的重要的! 里头还有相当多的属性是需要 root 才能设定的呢!
此外,如果是 log file 这种的登录文件,就更需要 +a 这个可以增加,但是不能修改旧有的数据与删除的参数了! 怎样? 很棒吧! 未来提到登录文件 (十八章)的认知时,我们再来聊一聊如何设定他吧!
命令2:lsattr
[root@study ~]# lsattr [-adR] 檔案或目錄
選項與參數: -a :將隱藏檔的屬性也秀出來;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
-R :連同子目錄的資料也一併列出來!
[root@study tmp]# chattr +aiS attrtest
[root@study tmp]# lsattr attrtest
--S-ia---------- attrtest
使用 chattr 设定后,可以利用 lsattr 来查阅隐藏的属性。
不过, 这两个指令在使用上必须要特别小心,否则会造成很大的困扰。
例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录档案给他设定成为具有 i 的属性,那么过了若干天之后, 你突然要新增用户,却一直无法新增! 别怀疑,赶快去将 i 的属性拿掉吧!