前言
之前,我們講過linux的普通檔案權限,但實際上,在普通的檔案權限上,還有一層更進階的特殊權限(也叫隐藏權限或屬性),這個可以控制改變檔案的屬性,以達到更進階的功能
以下所有基于
Centos7
系統進行示例。以下就詳細說說在centos7系統中的使用和表現。
正文
與檔案傳統權限類似,特殊權限的檢視和修改,分别使用
lsattr
和
chattr
指令
lsattr 檢視
lsattr
指令沒有help幫助資訊,看可以看到一個簡單的
usage
,提示了使用方法:
# lsattr -h
lsattr: invalid option -- 'h'
Usage: lsattr [-RVadlv] [files...]
如上可以看出
lsattr
一共有如下幾個參數,後跟檔案或目錄,就可以檢視到檔案的特殊權限(屬性):
-R | 遞歸地處理指定目錄下的所有檔案及子目錄 |
-V | 顯示版本資訊 |
-a | 列出目錄中的所有檔案,包括隐藏檔案 |
-d | 顯示目錄名稱,而非其内容 |
-l | 指出要顯示裝置的邏輯名稱 |
-v | 顯示檔案或目錄版本 |
chattr 修改
chattr
指令用于修改檔案的特殊權限(屬性),直接在檢視指令的用法:
# chattr --help
Usage: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...
可以看到可以通過
+ - =
來增加,删除,設定檔案的特殊權限,那這些
aAcCdDeijsStTu
又分别代表什麼權限呢? 通過
man
檢視指令的文檔,可以看得到:
- a:隻能以追加模式打開以進行寫入
- A:通路時不會修改其 atime 記錄
- c:寫入此檔案會在将資料存儲到磁盤之前壓縮資料,讀取時會自動解壓傳回正常資料
- C:檔案不會受到寫時複制更新的影響
- d:檔案不能成為dump程式的備份目标
- D:目錄被修改時,這些更改會同步寫入磁盤
- e:該檔案正在使用範圍來映射磁盤上的塊。不能使用 chattr 删除它
- i:無法修改,無法删除或重命名,無法建立指向此檔案的連結,也無法寫入或新增内容
- j:如果檔案系統在mount時,使用“data=ordered”或“data=writeback”,寫入檔案本身之前會将其所有資料寫入journal日志,當使用“data=journal”,此屬性無效
- s:檔案被删除時,它的塊被歸零并寫回到磁盤,即硬碟空間被全部收回
- S:檔案被修改時,這些更改會同步寫入磁盤
- t:檔案系統支援尾部合并(tail-merging)
- T:目錄将被視為目錄層次結構的頂部
- u:檔案被删除時,其内容會仍存在磁盤中,後面可以請求恢複
如上,通過chattr就可以修改檔案的特殊權限(屬性),最常見的就是 a,i 來限制檔案的修改,删除,寫入功能。如:
# chattr +i test.txt
除了這些屬性權限外,使用中還有
[-RVf]
,其意思分别為:
- R:周遊目錄下的所有檔案
- V:詳細說明 chattr 的輸出并列印程式版本
- f:強制執行,忽略大多數錯誤
結束
如上所示,靈活使用
chattr
和
lsattr
就可以管理檔案的特殊權限(屬性),可以幫助更好的進行系統管理和運維