chattr +i 是内核级不可变锁,可防止包括 root 在内的任何用户修改、删除或重命名关键配置文件(如 /etc/passwd、/etc/shadow、/etc/fstab),但加锁前须备份、验证属性并确认文件静态性,解锁后须立即重锁。

使用 chattr 给关键配置文件加不可变锁(immutable flag),能有效防止误删、误改甚至恶意篡改,比如 /etc/passwd、/etc/shadow、/etc/fstab 等。但要注意:该操作需 root 权限,且一旦设为不可变,连 root 也无法修改或删除,必须先解除锁定才能变更。
确认目标文件并检查当前属性
执行前先查看文件是否已有特殊属性,避免冲突:
- 运行
lsattr /etc/passwd查看当前状态,正常应显示类似----------------e---- /etc/passwd - 若已有
i(不可变)或a(仅追加)等标志,需评估是否需保留或清除 - 建议先备份:
cp /etc/passwd /etc/passwd.backup
设置不可变标志(+i)
对单个文件启用不可变锁定:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
chattr +i /etc/passwd- 可同时锁定多个文件:
chattr +i /etc/shadow /etc/group /etc/fstab - 设置后,任何用户(包括 root)都无法修改、重命名、删除或链接该文件,
vim保存会报错,rm或mv也会拒绝操作
验证与日常维护注意事项
锁定后务必验证效果,并建立配套管理习惯:
- 再次运行
lsattr /etc/passwd,应看到开头含i,如----i--------e---- /etc/passwd - 系统升级或软件重装可能因无法写入配置而失败,需提前
chattr -i解锁,操作完成后再加回 - 不要对正在被服务动态写入的文件(如
/etc/resolv.conf若由 systemd-resolved 管理)设+i,否则服务异常 - 可将常用锁定命令写入脚本或文档,避免遗忘解锁步骤
临时解除锁定以便维护
当需要编辑时,必须显式移除不可变标志:
chattr -i /etc/passwd- 编辑完成后,立即重新锁定:
chattr +i /etc/passwd - 切勿长期保持解锁状态,尤其在多用户或远程管理环境中
- 若忘记解锁导致系统异常(如无法更新密码),需在单用户模式或 recovery 模式下操作
不复杂但容易忽略:不可变锁是内核级防护,比文件权限更底层,但也意味着它绕过了常规权限控制逻辑,用好它依赖清晰的操作流程和责任意识。

















