LINUX

LINUX CHATTR指令

介紹

chattr指令用來變更檔案(夾)的特殊屬性。

語法

chattr [options] [+ - =]attributes [files]
Code language: plaintext (plaintext)

常用的options

-R Recursively process directories.
Code language: plaintext (plaintext)

特殊屬性

我們常常會使用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.
Code language: plaintext (plaintext)

注意:ai屬性必須要有root權限才能新增或移除。

chmod指令相似,我們有三種變更屬性的方式:

+ 新增屬性(相對) - 移除屬性(相對) = 設定屬性(絕對)
Code language: plaintext (plaintext)

範例

如果你希望檔案不被更改或刪除,可以新增i屬性:

⤍ sudo chattr +i myfile // 新增i屬性必須要有root權限
Code language: plaintext (plaintext)

i屬性非常強大,即便是root也無法更改或刪除該類檔案(夾)。要刪除須先移除i屬性:

⤍ sudo chattr -i myfile // 移除i屬性必須要有root權限
Code language: plaintext (plaintext)

你可以讓一個檔案只能的內容只能被增加,已新增的內容無法被修改或刪除:

⤍ sudo chattr +a myfile // 新增a屬性必須要有root權限 ⤍ echo "test" > myfile bash: myfile: Operation not permitted // 無法覆蓋內容 ⤍ echo "test" >> myfile // 成功新增內容
Code language: plaintext (plaintext)

上述範例使用到資料流重導向的概念。

你可以讓一個檔案被存取時,存取時間(atime)不被修改:

⤍ chattr +A myfile
Code language: plaintext (plaintext)

發佈留言