chattr — 變更 Linux 擴充檔案屬性

設定 ext 檔案系統的擴充屬性,如 immutable(不可修改)。

語法

chattr [操作符號][屬性] 檔案...

常用選項

選項 說明 範例
+屬性 新增指定屬性 chattr +i file
-屬性 移除指定屬性 chattr -i file
=屬性 設定為精確的屬性集合(其他清除) chattr =i file
-R 遞迴套用到目錄 chattr -R +i /etc/
i 不可修改(immutable):任何人都不能改或刪 chattr +i important.conf
a 僅可附加(append-only):只能 >> 不能 > chattr +a /var/log/secure.log
e 使用 extent 格式(ext4 預設,通常已設定)

使用範例

範例 1:鎖定重要設定檔(+i)

設定 immutable 旗標,防止任何人意外修改或刪除,連 root 也不行。

$ sudo chattr +i /etc/hosts
要解鎖時:sudo chattr -i /etc/hosts,然後再進行修改。
範例 2:設定日誌只能附加(+a)

設定 append-only,確保日誌只能新增不能被刪除或覆蓋,防止日誌竄改。

$ sudo chattr +a /var/log/app/audit.log
範例 3:解除 immutable 鎖定

需要修改被 +i 保護的檔案時,先移除旗標,修改後再重新加回。

$ sudo chattr -i /etc/hosts && sudo nano /etc/hosts && sudo chattr +i /etc/hosts
範例 4:確認屬性是否設定

用 lsattr 確認設定是否生效。

$ lsattr /etc/hosts
----i----------- /etc/hosts

常見錯誤與排錯

chattr: Operation not permitted while setting flags on /etc/file
原因
需要 root 權限設定擴充屬性。
解法
使用 sudo chattr +i file。
cannot open directory /path: Permission denied
原因
chattr 不能在 tmpfs 等不支援 ext 屬性的檔案系統上使用。
解法
chattr 僅適用於 ext2/ext3/ext4/btrfs。

延伸閱讀