首页/系统/Linux 运维命令速查/chattr 设置文件不可变属性

chattr 设置文件不可变属性

chattr 在 ext4/XFS 上给文件加内核级属性:+i 不可修改(连 root 都改不了)常用于加固关键配置、+a 只追加(日志防篡改)。

Linux 运维命令速查系统更新于 2026-10-13

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删除时清零数据块敏感文件删除后不可恢复
eextent 存储标记ext4 自动带,无需手工设置
设置不可变后账号管理命令与软件升级都可能失败,加固与可用性需要权衡,变更窗口记得解除。
排查操作不被允许的问题时先执行 lsattr 看属性,这一条能省掉大量无谓的权限排查。
属性依赖具体文件系统的支持,在不支持的文件系统上可能失败或静默无效,跨环境使用前先验证。
使用场景集中在两类:给关键配置与日志文件加上不可修改属性,防止被误改或误删;给只应追加的内容加上仅允许追加属性,让记录只能增加不能改写。加固项要写进变更与恢复文档,否则半年后账号管理或软件升级被拦住时,没人想得起是什么时候加的。

易错点

  • 忘记解除不可变属性会让账号管理与软件升级持续失败,排查时先看属性
  • 属性支持程度取决于文件系统,在不支持的环境设置会失败或静默无效
  • 加固项不纳入变更流程时,半年后没人知道为什么这个文件改不了
  • 属性与权限是两个层面,权限位看似可写也可能被属性挡住,排查不要只看权限
  • 在有备份与同步任务的文件上加不可修改属性:备份工具的删除与覆盖步骤会持续失败,加属性前先确认相关任务的行为,必要时把它们排除在同步之外

数据来源与参考

  • man 1 chattr(e2fsprogs)
  • man 1 lsattr

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌