LINUX

LINUX CHATTR指令

介紹

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.

注意:ai屬性必須要有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

發佈留言