Linux中用chattr +i设置文件不可变属性可防止包括root在内的任何用户修改关键配置文件,适用于/etc/passwd、/etc/shadow、/etc/sudoers、/etc/ssh/sshd_config及/boot/grub2/grub.cfg等核心安全文件,操作需先备份、验证并谨慎解除以避免影响系统维护与升级。

Linux中用chattr命令设置文件“不可变”(i属性),是防止关键配置被意外或恶意修改的底层加固手段。一旦启用,连root用户也无法删除、重命名、写入或清空该文件,必须先取消属性才能操作。
哪些配置文件适合加不可变属性
核心系统配置和安全相关文件最需保护,例如:
-
/etc/passwd、/etc/shadow、/etc/group—— 用户与权限基础数据 -
/etc/sudoers—— 权限提升策略,误改易导致提权或锁死 -
/etc/ssh/sshd_config—— SSH服务主配置,防暴力破解或后门开启 -
/boot/grub2/grub.cfg(或/boot/grub/grub.cfg)—— 启动引导配置,防启动级持久化攻击
设置不可变属性的操作步骤
执行前确认你有root权限,并已备份原文件:
- 添加不可变属性:
chattr +i /etc/passwd - 验证是否生效:
lsattr /etc/passwd→ 输出应含----i--------- - 临时解除(维护时必需):
chattr -i /etc/passwd - 修改后再重新加回:
chattr +i /etc/passwd
注意:+i对目录无效;如需保护整个配置目录(如/etc/ssh),应逐个保护关键文件,或改用+a(仅追加)等更宽松属性配合审计。
常见误区与风险提醒
不可变属性不是“一劳永逸”,错误使用反而影响系统维护:
- 加了
+i后,usermod、passwd、authconfig等命令会失败,报错“Operation not permitted” - 系统升级或软件包更新可能自动覆盖受保护文件,导致服务异常(如SSH无法启动)
- 不要对日志文件(如
/var/log/secure)设+i,否则日志写入中断 - 恢复系统时若忘记清除
i属性,可能导致配置无法更新或故障排查受阻
配合其他机制效果更佳
单靠chattr不够全面,建议组合使用:
- 用
rpm -V(RHEL/CentOS)或dpkg --verify(Debian/Ubuntu)定期校验关键文件完整性 - 开启auditd审计,监控对敏感路径的
chmod、chattr等元数据操作 - 将加固脚本纳入配置管理(Ansible/Puppet),确保属性在重装或扩容后自动重建
- 把
chattr操作记录进运维日志,并在CMDB中标注受保护文件清单

















