介紹
chattr
指令用來變更檔案(夾)的特殊屬性。
語法
chattr [options] [+ - =]attributes [files]
常用的options
-R Recursively process directories.
特殊屬性
我們常常會使用ls
指令或是stat
指令來查看檔案(夾)的資訊及屬性,但Linux檔案系統其實還支援多個特殊屬性可以使用。
常用的特殊屬性:
a Append-only: appends are permitted to this file, but it cannot otherwise be edited. (Root access needed)
A Access not timestamped: accesses to this file don't update its access timestamp (atime).
c Compressed: data is transparently compressed on writes and uncompressed on reads.
i Immutable: file cannot be changed or deleted. (Root access needed)
s Secure deletion: if deleted, this file's data is overwritten with zeros.
S Synchronous update: changes are written to disk immediately.
注意:a
與i
屬性必須要有root
權限才能新增或移除。
與chmod
指令相似,我們有三種變更屬性的方式:
+ 新增屬性(相對)
- 移除屬性(相對)
= 設定屬性(絕對)
範例
如果你希望檔案不被更改或刪除,可以新增i
屬性:
⤍ sudo chattr +i myfile // 新增i屬性必須要有root權限
i
屬性非常強大,即便是root
也無法更改或刪除該類檔案(夾)。要刪除須先移除i
屬性:
⤍ sudo chattr -i myfile // 移除i屬性必須要有root權限
你可以讓一個檔案只能的內容只能被增加,已新增的內容無法被修改或刪除:
⤍ sudo chattr +a myfile // 新增a屬性必須要有root權限
⤍ echo "test" > myfile
bash: myfile: Operation not permitted // 無法覆蓋內容
⤍ echo "test" >> myfile // 成功新增內容
上述範例使用到資料流重導向的概念。
你可以讓一個檔案被存取時,存取時間(atime)
不被修改:
⤍ chattr +A myfile
發佈留言