chattr +i 是防篡改最硬核方式,直接由内核 vfs 层拦截所有修改操作;必须加锁的文件包括 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/sudoers、/etc/ssh/sshd_config 和 /boot/grub2/grub.cfg,加锁前需备份、验证文件系统与selinux上下文,维护时须严格遵循“解锁→编辑→立即重锁”流程。

用 chattr +i 给关键配置文件加锁,是防篡改最硬核的方式——它不看权限、不认 root,直接由内核在 VFS 层拦截所有修改操作。
哪些文件必须加 i 属性
只锁定那些“静态、极少变更、改错即瘫痪”的核心文件:
- /etc/passwd 和 /etc/shadow:用户身份与密码哈希的源头,被注入或清空会导致任意登录或账户锁定
- /etc/group 和 /etc/gshadow:组权限基线,篡改可能让普通用户获得 wheel 或 root 组权限
- /etc/sudoers:提权策略总开关,一行错误就可能全员失权或开放后门
-
/etc/ssh/sshd_config:SSH 入口配置,加锁后需配合
systemctl reload sshd手动触发生效 - /boot/grub2/grub.cfg:启动链第一环,防持久化 Bootkit 植入
正确加锁操作流程
加锁不是执行一条命令就完事,必须闭环管理:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 先备份原始文件,例如:
cp /etc/sudoers /etc/sudoers.bak,再对备份也执行chattr +i /etc/sudoers.bak - 确认文件系统支持(
df -T /etc输出应为 ext4 或 xfs) - 以 root 身份逐条加锁:
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow - 立即验证:
lsattr /etc/passwd /etc/shadow,输出每行开头都应有----i--------
加锁后怎么安全修改
i 属性一旦生效,任何编辑都会报 Operation not permitted。维护时必须严格按三步走:
- 临时解锁:
chattr -i /etc/sudoers - 用专用工具编辑(如
visudo校验语法,避免保存失败导致系统不可用) - 编辑完成立刻重锁:
chattr +i /etc/sudoers
建议把这三步封装成脚本函数,杜绝漏锁风险。
常见误用与避坑提醒
加错地方或时机,反而会拖垮系统:
-
别对目录递归加 +i:如
chattr -R +i /etc会让包管理器无法写入、SSH 无法生成密钥、systemd 单元重载失败 - 别给动态文件加 i:/etc/resolv.conf 若由 NetworkManager 管理,加锁后 DNS 会失效;/var/log/*.log 加 i 会导致日志服务崩溃
- +a 不适用于配置文件:它允许追加,但配置文件末尾多一行就可能引发服务异常,+a 只该用于 rsyslog、journalctl 这类原生支持 O_APPEND 的日志场景
-
加锁前检查 SELinux 上下文:用
ls -Z /etc/sudoers确认类型为etc_t,否则可能被 SELinux 静默拦截










