不可变属性(i属性)是ext2/ext3/ext4/xfs等文件系统支持的内核级防护机制,启用后连root也无法修改、删除、重命名或链接文件,且所有写操作均返回Operation not permitted错误。

Linux中用chattr命令可以给文件或目录设置底层属性,其中+i(immutable)是最强的防篡改手段——一旦启用,连root用户也无法修改、删除、重命名或链接该文件,除非先解除锁定。
什么是不可变属性(i属性)
不可变属性是ext2/ext3/ext4/xfs等主流文件系统支持的一种扩展属性,它绕过常规权限控制,直接由内核强制执行。即使你拥有文件的所有权、写权限,甚至以root身份操作,只要文件被标记为i,所有写类操作都会返回Operation not permitted错误。
- 不能修改内容(如
echo >>、vim保存) - 不能删除或移动(
rm、mv失败) - 不能硬链接或软链接指向它(
ln报错) - 不能更改时间戳(
touch无效)
如何设置和查看不可变属性
使用chattr +i添加,chattr -i移除;用lsattr查看当前属性状态。
- 锁定单个文件:
sudo chattr +i /etc/passwd - 递归锁定整个目录(含子项):
sudo chattr -R +i /var/log/secure(慎用,可能影响日志轮转) - 查看是否已锁定:
lsattr /etc/passwd→ 输出类似----i---------e--- /etc/passwd - 解锁前务必确认必要性:
sudo chattr -i /etc/passwd
适用场景与注意事项
不可变属性适合保护关键系统配置、审计日志、签名证书等“只读即安全”的文件,但不是万能锁,也存在明显限制。
- 仅对支持该特性的文件系统生效(如ext系列、xfs),不适用于NTFS、FAT、NFS挂载点(除非服务端也支持)
- 不能替代访问控制(ACL)或SELinux,它不控制读取,只阻止写入
- 备份工具若依赖复制或重命名,可能因
i属性失败,需提前解除或改用--preserve=attributes等兼容方式 - 容器或云环境里,宿主机文件系统策略可能覆盖容器内
chattr效果,需统一评估
其他实用属性组合
chattr还提供多个辅助属性,可按需搭配使用:
-
+a:只能追加(适合日志文件,echo >>允许,truncate禁止) -
+A:禁止更新atime(减少I/O,提升性能) -
+S:同步写入(每次写都刷盘,增强可靠性) -
+u:允许用户恢复已删除文件(需文件系统支持extundelete等工具)

















