linux檔案系統高階許可權屬性
最近在cu論壇看見有同學在問,如何給一個目錄設定root都不能刪除的許可權。
其實linux有高階許可權,除了0777的許可權位還有更高階的許可權控制。在Linux下我們可以用lstat命令檢視檔案的相關屬性資訊,除了這些屬性之外,Linux下的檔案還有一些隱藏的屬性,我們可以用
lsattr
命令來檢視:
root@sklinux:/opt# lsattr
——a——e– ./src
如上面的a\e許可權
上面這條命令的輸出表示src檔案具有擴充套件屬性a和e,即只能向該檔案新增資料,而不能刪除,並且該檔案使用extends來對映磁碟塊。顯然,將那些只允許增長但不允許修改和刪除的檔案設定為這樣的隱藏屬性是非常有利於保護資料安全的。
chattr
用chattr命令可以改變一個檔案的隱藏屬性。其語法格式為:
chattr [ -RVf ] [ -v version ] [ mode ] files…
下面給出幾個選項的含義:
選項 含義
-R 遞迴更改目錄下所有子目錄和檔案的屬性
-V 顯示詳細資訊
-f 忽略大部分錯誤資訊
-v version 設定檔案的檔案號碼
mode 設定檔案的隱藏屬性,其格式為+-=[acdeijstuACDST]
最關鍵的是在[mode]部分,[mode]部分的格式是+-=[acdeijstuACDST],這部分是用來設定檔案的屬性。其中+表示在原有引數設定基礎上追加引數;-表示在原有引數設定基礎上移除引數;=表示更新為指定引數。下面列出幾個常用的屬性引數的含義:
屬性 含義
A 檔案的atime(access time)不可被修改,這樣可以減少磁碟I/O數量,對於筆記本電腦有利於提高續航能力
S 硬碟I/O同步選項,功能類似sync
a 即append,設定該引數後,只能向檔案中新增資料,而不能刪除,多用於伺服器日誌檔案安全,只有root才能設定這個屬性
i 檔案不能被刪除、改名、設定連結關係,同時不能寫入或新增內容(即使是root使用者)。只有root才能設定這個屬性
c 即compresse,檔案會自動的經壓縮後再儲存,讀取時會自動的解壓
d 即no dump,設定檔案不能成為dump程式的備份目標
j 即journal,設定此引數使得當通過mount引數”data=ordered”或”data=writeback”掛載的檔案系統,檔案在寫入時會先被記錄(在journal中)。如果filesystem被設定引數為data=journal,則該引數自動失效
s 即secure,保密選項。設定了s屬性的檔案在被刪除時,其所有資料塊會被寫入0
u 即undelete,反刪除選項。與s相反,檔案在被刪除時,其所有的資料塊都保留著,使用者今後可以恢復該檔案
例如這條命令,可以將sk目錄下的檔案設定為不允許任何人修改:
$ sudo chattr -R =i ~/sk
1
lsattr
用lsattr命令列出檔案的隱藏屬性。其語法格式為:
lsattr [ -RVadv ] [ files… ]
下面給出幾個選項的含義:
選項 含義
-R 遞迴顯示目錄下所有子目錄和檔案的屬性
-V 顯示lsattr程式的版本資訊
-a 顯示所有檔案的屬性資訊,包括以.開頭的檔案
-d 顯示目錄的屬性,而不是目錄下的檔案的屬性
-v 顯示檔案的檔案號碼
例如,下面這條命令顯示sk目錄的隱藏屬性:
$ lsattr -Rd sk/
—-i———– sk/
———————