linux中真正防删除的加锁方式只有chattr +i,它在vfs层拦截unlink()等系统调用,使rm、mv、重定向写入全部失败,且root也无法绕过;+a、+d等属性均无法阻止删除。

Linux 中真正防删除的加锁方式,只有 chattr +i 这一种。它不是改权限,而是让内核拒绝所有删除、修改、重命名操作,root 也无权绕过。
为什么只有 +i 能真正防删
+i 属性作用于文件系统 VFS 层,直接拦截 unlink()、rename() 等系统调用。这意味着:
-
rm file→ 报 Operation not permitted -
mv file old→ 同样失败 -
echo "x" > file或> file→ 全部被拒 -
echo "x" >> file→ 也不行(+i 禁止一切写)
而 +a(只允许追加)、+d(仅禁用 dump 或部分场景下限制删除)都不能阻止 rm;它们不拦截 unlink,所以删文件依然成功。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
加锁前必须确认的三件事
跳过任一环节,可能导致加锁无效或服务异常:
- 运行
df -T /path/to/file,确认文件系统是 ext4 或 xfs;NFS、tmpfs、btrfs(默认)、FAT 等不支持 i 属性 - 检查挂载状态:
mount | grep "$(dirname /path/to/file)",确保不含 ro(只读) 标志 - 必须由 root 执行,且不在容器或受限命名空间中(否则可能静默失败)
标准操作流程
以保护 /etc/passwd 为例:
- 先备份:
cp /etc/passwd /backup/passwd.$(date +%s),并建议对备份也执行chattr +i - 检查当前属性:
lsattr /etc/passwd,确保没有冲突标志(如已有 i 或 a) - 加锁:
sudo chattr +i /etc/passwd - 验证:
lsattr /etc/passwd输出中应含 i,例如----i---------e--- - 测试:
sudo rm /etc/passwd应报错,sudo echo "x" > /etc/passwd同样失败
目录加 i 的特殊注意事项
给目录加 +i,会冻结整个目录结构:
-
chattr +i /etc/ssh→ 禁止在该目录下新建、删除、重命名任何文件,包括 sshd 启动时生成的临时密钥 - 若需锁定整个站点目录(如静态资源),推荐递归加锁:
sudo chattr -R +i /www/wwwroot/example.com/html - 解锁也必须递归:
sudo chattr -R -i /www/wwwroot/example.com/html,否则子项仍被锁死 - 不要对
~/.ssh整个目录加 +i,否则known_hosts更新会失败;只锁目标文件更安全










