chattr 在 Linux 下的使用
已于 2025年09月04日 14:24 修改
访问次数:0
详细介绍一下 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)