chattr +i 是最有效的内核级防篡改手段,可硬拦截包括 root 在内的所有修改操作;必须优先锁定 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 等核心文件,严禁对目录递归加锁或误设动态节点。

Linux 系统中保护核心配置文件不被修改,不能只靠 chmod 444 这类普通权限控制——因为 root 用户仍可覆盖或删除。真正有效的只读防护,必须用内核级不可变属性 chattr +i,辅以权限收敛和操作审计。
一、用 chattr +i 锁死关键文件(最强防护)
这是 Linux 文件系统原生支持的硬性保护,加了 i 标志后,连 root 也无法修改、删除、重命名、硬链接该文件,除非先执行 chattr -i。
- 适用对象:极少变更、强依赖的核心配置,例如
/etc/sudoers、/etc/fstab、/boot/grub2/grub.cfg、/etc/nginx/nginx.conf(确认不启用热重载) - 操作三步走:
- 先备份:
cp /etc/sudoers /etc/sudoers.bak - 再验证语法:
visudo -c(避免锁死后无法修复) - 最后加锁:
sudo chattr +i /etc/sudoers
- 先备份:
- 验证是否生效:
lsattr /etc/sudoers→ 输出应含----i---------
尝试修改:echo "test" >> /etc/sudoers→ 报错Operation not permitted
⚠️ 注意:
- 不要对整个
/etc或/usr/bin目录递归加+i(如chattr -R +i /etc),会导致包管理器、SSH 密钥生成等基础功能瘫痪; - 容器环境需确保容器有
CAP_LINUX_IMMUTABLE能力,否则chattr会静默失败。
二、配合文件权限与属主控制(纵深防御)chattr +i 是核心,但还需收紧访问入口:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 仅保留 root 读写权限:
sudo chmod 600 /etc/sudoers(避免其他用户读取敏感策略) - 确保属主为 root:
sudo chown root:root /etc/sudoers - 若使用配置管理工具(如 Ansible),部署脚本中加入
chattr -i→ 更新 →chattr +i流程,避免锁死导致更新卡住。
三、监控异常修改尝试(主动发现)
只读不是“设完就不管”,要防绕过行为:
- 启用 auditd 监控绕过
chattr的写操作:sudo auditctl -a always,exit -F path=/etc/sudoers -F perm=w -k sudoers_write - 查日志:
ausearch -k sudoers_write | aureport -i -f - 可搭配脚本自动告警(邮件、企业微信等),例如检测到非预期进程(如
vim、sed -i)触发写事件即上报。
四、避免常见误操作
-
chmod 444对 root 无效,仅适合临时限制普通用户; -
chattr +i无法撤销,没有chattr -u或类似命令,误锁后只能chattr -i解锁; - 修改前务必确认该文件是否被服务热加载(如某些 Nginx 配置支持
nginx -s reload),否则加锁会导致配置无法生效; -
lsattr和chattr命令本身需 root 权限执行,普通用户无法查看或解除i属性。
基本上就这些。










