chattr +i 是内核级不可变锁定,连 root 也无法修改、删除、重命名或更新时间戳;需先验证文件系统类型、备份原文件、检查当前属性,再执行加锁并用 lsattr 确认含 i 标志。

直接用 chattr +i 就能实现真正的不可修改——它不是改权限,而是让内核拒绝所有写类操作,连 root 也无权绕过。
给文件加 i 属性:彻底防改、防删、防重命名
执行命令后,该文件无法被修改内容、删除、重命名、链接,甚至 touch 更新时间戳也会失败:
- 加锁:sudo chattr +i /etc/passwd
- 验证:lsattr /etc/passwd —— 输出中必须含 i(如
----i---------e---) - 测试:sudo echo "test" > /etc/passwd 或 sudo rm /etc/passwd 都应报 Operation not permitted
给目录加 i 属性:冻结整个目录结构
对目录设 +i,会禁止在该目录下新建、删除、重命名任何条目,子文件是否带 i 不影响此限制:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 递归锁定(推荐):sudo chattr -R +i /www/wwwroot/example.com/html(适用于静态资源根目录)
- 仅锁目录本身(慎用):sudo chattr +i /etc/ssh —— 但若 sshd 启动时需生成临时密钥,会导致服务失败
- 解锁必须递归:sudo chattr -R -i /www/wwwroot/example.com/html,否则子项仍被锁死
加锁前必须检查的三件事
跳过任一环节都可能引发维护中断或服务异常:
-
确认文件系统类型:df -T /etc 输出应为
ext4或xfs;NTFS、FAT、NFS 挂载点不支持 i 属性 - 备份原文件:cp /etc/sudoers /backup/sudoers.$(date +%s) —— 加锁后 cp 命令本身也会失败
-
检查当前属性:lsattr /etc/sudoers,确保没有冲突标志(如已有
a或i)
维护流程:解锁 → 编辑 → 立即重锁
i 属性不是“设完就不管”,而是要求严格的人工介入节奏:
- 修改前先停相关服务(如改
/etc/ssh/sshd_config前运行 systemctl stop sshd) - 确认无进程占用:lsof /etc/passwd 或 fuser -v /etc/passwd
- 解锁:sudo chattr -i /etc/passwd
- 编辑完成,立刻重锁:sudo chattr +i /etc/passwd
- 注意:yum update 等升级操作可能覆盖配置,需提前安排解锁窗口

















