chattr +i 是最直接有效的防篡改手段,可硬拦截所有修改操作;必须优先锁定 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 四类核心配置文件,并避免对目录递归加锁或误设动态节点。

用 chattr +i 给关键文件加不可变属性,是最直接有效的防篡改手段。它不看权限、不认 root,只要内核支持 ext4 或 xfs,就能在文件系统层硬拦截所有修改操作。
哪些文件必须加 i 属性
优先锁定直接影响身份认证和系统启动的四类核心配置文件:
- /etc/passwd:用户账户基础信息,被注入 UID=0 条目等于开放 root 后门
- /etc/shadow:密码哈希存储地,清空或替换会导致登录失控
- /etc/group:组定义文件,篡改可能让普通用户加入 wheel 或 root 组
- /etc/gshadow:与 /etc/group 配套使用,确保组权限控制完整
其他高危目标还包括:/etc/sudoers、/boot/grub2/grub.cfg、/etc/fstab、/etc/ssh/sshd_config 等。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
正确设置 +i 的操作步骤
所有操作需以 root 身份执行,且目标文件必须位于支持该特性的文件系统(ext4/xfs 均可):
- 先检查当前属性:
lsattr /etc/passwd /etc/shadow,确认无冲突属性(如已有 i,就不用重复加) - 逐条启用不可变标志:
sudo chattr +i /etc/passwd、sudo chattr +i /etc/shadow等 - 立即验证:
lsattr /etc/passwd应显示类似----i--------e-----,开头的i表示生效 - 测试防护效果:
sudo rm /etc/shadow或sudo echo "test" > /etc/passwd均应返回Operation not permitted
日志类文件用 +a 更合适
对 /var/log/secure、/var/log/messages 这类需持续写入的文件,+a(append-only) 是更实用的选择:
- 设置命令:
sudo chattr +a /var/log/secure - 生效后允许追加:
echo "$(date) alert" >> /var/log/secure成功 - 但禁止覆盖:
echo "reset" > /var/log/secure失败;truncate -s 0 /var/log/secure也失败 - 注意:+a 和 +i 不可共存,选其一:要持续记录就用 +a,要彻底冻结就用 +i(适合归档后文件)
必须避开的常见错误
i 属性极其强硬,误用会直接导致系统无法维护:
- 不要对目录递归加 i(如
chattr -R +i /etc),否则系统升级、软件安装、配置更新全部卡死 - 不能给
/proc、/sys、/dev下的动态节点设 i,内核会拒绝或报错 - 加锁前务必备份原始文件,并对备份也执行
chattr +i,防止主备同时被破坏 - 修改配置时必须走标准流程:
chattr -i 文件名 → 编辑 → chattr +i 文件名,漏掉最后一步等于没防护

















