chattr +i 是唯一能真正阻止 root 修改文件的方式,它通过内核 inode 层拦截 write/unlink/rename 等系统调用,失败统一返回 operation not permitted;适用文件包括 /etc/passwd、/etc/shadow、/etc/group、/etc/sudoers、/etc/ssh/sshd_config 和 /boot/grub2/grub.cfg,加锁前须备份、验证文件系统类型(ext4/xfs)及当前属性,执行后需用 lsattr 确认含 i 标志并测试操作失败,维护时严格遵循解锁→编辑→立即重锁流程。

用 chattr +i 设置文件不可修改属性,是 Linux 中唯一能真正阻止 root 用户修改、删除、重命名或链接文件的方式。它不依赖用户权限模型,而是直接作用于文件系统 inode 层,由内核强制拦截 write、unlink、rename 等系统调用,失败时统一返回 Operation not permitted。
哪些文件适合加 i 属性
只锁定那些长期静态、极少变更、且每次修改都必须人工确认的关键配置:
-
/etc/passwd、/etc/shadow、/etc/group:身份认证基线,篡改等于权限体系失效 -
/etc/sudoers:提权控制核心,一行错误可能导致全员失权或越权 -
/etc/ssh/sshd_config:SSH 入口配置,但 reload 服务前必须先解锁 -
/boot/grub2/grub.cfg:启动链第一环,防持久化后门植入
设置前必须做的三件事
- 先备份:
cp /etc/sudoers /backup/sudoers.$(date +%s)—— 加锁后cp也会失败 - 查文件系统类型:
df -T /etc输出应为ext4或xfs;NTFS、FAT、NFS 挂载点不支持 - 看当前属性:
lsattr /etc/passwd,确认无冲突标志(如已有a或i)
正确执行与验证流程
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 加锁:
sudo chattr +i /etc/passwd - 验证:
lsattr /etc/passwd应输出类似----i---------e--- /etc/passwd(开头含i) - 测试:
echo "x" > /etc/passwd、rm /etc/passwd、mv /etc/passwd old全部报错
解锁与维护的硬性规则
- 解锁前停相关服务(如修改 sshd_config 前
systemctl stop sshd) - 用
lsof /etc/passwd或fuser -v /etc/passwd确认无进程占用 - 解锁 → 编辑 → 立即重锁,三步缺一不可
- 升级软件(如
yum update openssh-server)可能覆盖配置,需提前规划解锁窗口
不复杂但容易忽略:+i 是内核级开关,不是权限补丁。它有效,也危险——设错位置或忘了重锁,系统就卡在维护半途。










