5.4 文件的隱藏屬性

2022-05-30 13:57 更新

Linux系統(tǒng)中的文件除了具備一般權(quán)限和特殊權(quán)限之外,還有一種隱藏權(quán)限,即被隱藏起來(lái)的權(quán)限,默認(rèn)情況下不能直接被用戶發(fā)覺(jué)。有用戶曾經(jīng)在生產(chǎn)環(huán)境和RHCE考試題目中碰到過(guò)明明權(quán)限充足但卻無(wú)法刪除某個(gè)文件的情況,或者僅能在日志文件中追加內(nèi)容而不能修改或刪除內(nèi)容,這在一定程度上阻止了黑客篡改系統(tǒng)日志的圖謀,因此這種“奇怪”的文件也保障了Linux系統(tǒng)的安全性。

  1. chattr命令

chattr命令用于設(shè)置文件的隱藏權(quán)限,格式為“chattr [參數(shù)] 文件”。如果想要把某個(gè)隱藏功能添加到文件上,則需要在命令后面追加“+參數(shù)”,如果想要把某個(gè)隱藏功能移出文件,則需要追加“-參數(shù)”。chattr命令中可供選擇的隱藏權(quán)限參數(shù)非常豐富,具體如表5-6所示。

表5-6 chattr命令中用于隱藏權(quán)限的參數(shù)及其作用

參數(shù) 作用
i 無(wú)法對(duì)文件進(jìn)行修改;若對(duì)目錄設(shè)置了該參數(shù),則僅能修改其中的子文件內(nèi)容而不能新建或刪除文件
a 僅允許補(bǔ)充(追加)內(nèi)容,無(wú)法覆蓋/刪除內(nèi)容(Append Only)
S 文件內(nèi)容在變更后立即同步到硬盤(pán)(sync)
s 徹底從硬盤(pán)中刪除,不可恢復(fù)(用0填充原文件所在硬盤(pán)區(qū)域)
A 不再修改這個(gè)文件或目錄的最后訪問(wèn)時(shí)間(atime)
b 不再修改文件或目錄的存取時(shí)間
D 檢查壓縮文件中的錯(cuò)誤
d 使用dump命令備份時(shí)忽略本文件/目錄
c 默認(rèn)將文件或目錄進(jìn)行壓縮
u 當(dāng)刪除該文件后依然保留其在硬盤(pán)中的數(shù)據(jù),方便日后恢復(fù)
t 讓文件系統(tǒng)支持尾部合并(tail-merging)
x 可以直接訪問(wèn)壓縮文件中的內(nèi)容

為了讓讀者能夠更好地見(jiàn)識(shí)隱藏權(quán)限的效果,我們先來(lái)創(chuàng)建一個(gè)普通文件,然后立即嘗試刪除(這個(gè)操作肯定會(huì)成功):

    [root@linuxprobe ~]# echo "for Test" > linuxprobe
    [root@linuxprobe ~]# rm linuxprobe
    rm: remove regular file ‘linuxprobe’? y

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。如果您沒(méi)有親眼見(jiàn)證過(guò)隱藏權(quán)限強(qiáng)大功能的美妙,就一定不會(huì)相信原來(lái)Linux系統(tǒng)會(huì)如此安全。接下來(lái)我們?cè)俅涡陆ㄒ粋€(gè)普通文件,并為其設(shè)置不允許刪除與覆蓋(+a參數(shù))權(quán)限,然后再嘗試將這個(gè)文件刪除:

    [root@linuxprobe ~]# echo "for Test" > linuxprobe
    [root@linuxprobe ~]# chattr +a linuxprobe
    [root@linuxprobe ~]# rm linuxprobe
    rm: remove regular file ‘linuxprobe’? y
    rm: cannot remove ‘linuxprobe’: Operation not permitted

可見(jiàn),上述操作失敗了。

  1. lsattr命令

lsattr命令用于顯示文件的隱藏權(quán)限,格式為“l(fā)sattr [參數(shù)] 文件”。在Linux系統(tǒng)中,文件的隱藏權(quán)限必須使用lsattr命令來(lái)查看,平時(shí)使用的ls之類(lèi)的命令則看不出端倪:

    [root@linuxprobe ~]# ls -al linuxprobe
    -rw-r--r--. 1 root root 9 Feb 12 11:42 linuxprobe

一旦使用lsattr命令后,文件上被賦予的隱藏權(quán)限馬上就會(huì)原形畢露。此時(shí)可以按照顯示的隱藏權(quán)限的類(lèi)型(字母),使用chattr命令將其去掉:

    [root@linuxprobe ~]# lsattr linuxprobe
    -----a---------- linuxprobe
    [root@linuxprobe ~]# chattr -a linuxprobe
    [root@linuxprobe ~]# lsattr linuxprobe 
    ---------------- linuxprobe
    [root@linuxprobe ~]# rm linuxprobe 
    rm: remove regular file ‘linuxprobe’? y
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)