chattr 是什么
chattr 在 ext4 与部分 XFS 场景下为文件设置内核级属性:不可变属性让文件连 root 也无法修改,只追加属性允许继续写入但禁止改写与删除。它们常用于保护关键配置与审计日志,代价是日常运维动作同样会被挡住。
基本信息
| 用途 | 设置不可变与只追加等文件系统属性 |
|---|---|
| 语法 | chattr 加减等号加属性 文件 |
| 查看 | lsattr 文件或目录 |
| 支持范围 | ext4 与部分 XFS;tmpfs 与 NFS 通常无效 |
典型使用场景
- 加固关键配置:锁定账号与启动相关文件,防止被篡改
- 日志防删改:只追加属性让审计日志只能追加不能改写
- 误删保护:重要归档加不可变属性,降低误操作风险
- 异常排查:出现操作不被允许时先用 lsattr 检查属性
- 变更管理:加固与解锁纳入变更流程,避免长期遗忘
常用示例
常用示例
chattr +i /etc/passwd /etc/shadow # 锁定关键文件
chattr -i /etc/passwd # 解除后才能编辑
chattr +a /var/log/audit/audit.log # 只允许追加
lsattr /etc/passwd /etc/shadow # 查看已设置的属性
lsattr /var/log/audit/ # 批量查看目录下属性常用属性
| 属性 | 含义 | 典型用途 |
|---|---|---|
| i | 不可变,任何用户都不能修改 | 保护配置与关键文件 |
| a | 只可追加,不可改写与删除 | 日志防篡改 |
| d | 不参与备份转储 | 排除大容量临时目录 |
| s | 删除时清零数据块 | 敏感文件删除后不可恢复 |
| e | extent 存储标记 | ext4 自动带,无需手工设置 |
设置不可变后账号管理命令与软件升级都可能失败,加固与可用性需要权衡,变更窗口记得解除。
排查操作不被允许的问题时先执行 lsattr 看属性,这一条能省掉大量无谓的权限排查。
属性依赖具体文件系统的支持,在不支持的文件系统上可能失败或静默无效,跨环境使用前先验证。
使用场景集中在两类:给关键配置与日志文件加上不可修改属性,防止被误改或误删;给只应追加的内容加上仅允许追加属性,让记录只能增加不能改写。加固项要写进变更与恢复文档,否则半年后账号管理或软件升级被拦住时,没人想得起是什么时候加的。