chattr 在 Linux 下的使用

详细介绍一下 chattr 在 Linux 下的使用



1. chattr 是什么?

  • 全称:change attribute
  • 用途:修改 Linux 文件系统(ext2/ext3/ext4 等) 的文件属性。
  • 这些属性不是普通的 rwx 权限,而是 文件系统级别的特殊标志,例如只读、不可删除、自动追加等。
  • 管理员常用它来防止误删、锁定关键配置文件。


2. 基本语法

chattr [选项] 操作符 属性 文件
  • 操作符: + :增加某个属性 - :移除某个属性 = :设置为指定属性(会覆盖原有属性)
  • 常见选项: -R :递归修改目录下所有文件 -V :显示执行过程(verbose)


3. 常见属性说明

属性含义
a只允许追加写入,不能覆盖或删除文件内容(适合日志文件 /var/log/*)。
i不可更改,文件不能被删除、改名、写入、建立硬链接(防止误删,如 /etc/passwd)。
A文件 最后访问时间 atime 不更新,减少 I/O。
S文件内容修改后 立即同步写入磁盘(提高安全性,但性能下降)。
d在执行 dump 备份时,忽略此文件
u文件删除时,内容可恢复(可选特性,并非所有文件系统支持)。
c文件会被 自动压缩 存储,读取时解压。
e使用 extent 映射 方式(ext4 默认开启)。
⚠️ 注意:并不是所有属性都对目录/文件有效,部分依赖文件系统支持。


4. 使用示例

(1) 给文件加“不可删除”保护

sudo chattr +i /etc/passwd
lsattr /etc/passwd

输出示例(i 表示 immutable):

----i-------- /etc/passwd

要取消:

sudo chattr -i /etc/passwd


(2) 限制日志文件只能追加

sudo chattr +a /var/log/syslog

这样只能用 echo "msg" >> /var/log/syslog 追加内容,不能 > 覆盖,也不能直接删除。



(3) 递归修改目录

sudo chattr -R +i /var/www/html

给整个网站目录加不可删除标志。



(4) 查看文件属性

lsattr -d /etc/passwd


5. 使用场景

  • 保护关键配置文件:/etc/passwd、/etc/shadow、/etc/fstab
  • 防止日志被覆盖:/var/log/* 设置 +a
  • 加固网站目录:防止被黑客删除篡改文件


✅ 总结:
chattr 是比 chmod/chown 更底层的保护机制,可以让文件“免疫”常见误操作和攻击,非常适合系统加固。但要注意,如果忘记自己加了 +i,可能会导致后续更新/写入失败,需要提前记录好。



要不要我帮你整理一份 chattr 常用命令速查表(Cheat Sheet),方便你日常系统维护时快速查?

文章标签:

评论(0)