遇到“operation not permitted”或无法删除文件时,应先用lsattr检查隐藏属性:i属性使文件不可删改,a属性限制为仅追加;二者任一存在均导致rm失败,且需root权限清除。

遇到“Operation not permitted”或删不掉文件时,lsattr 是第一个该用的命令——它能直接看到普通权限之外的隐藏安全属性,比如让文件“锁死”的 i(不可修改)和 a(仅追加)。
用 lsattr 查看文件是否被“锁住”
直接运行:
-
lsattr 文件名—— 查单个文件,最常用; -
lsattr -d 目录名—— 查目录本身的属性(不是里面的内容); -
lsattr -R /path/to/dir—— 递归查看整个目录树(适合排查父目录是否也被设了保护)。
输出类似 ----ia---e- filename:从左到右每列代表一个属性开关,“i”或“a”出现就说明它被限制了删除或修改。
重点关注的两个关键属性
真正导致“无法删除”的,主要是这两个:
本文档主要讲述的是Android linux内核介绍;Android内核是基于Linux 2.6内核的(目前最新开发版本是2.6.31),它是一个增强内核版本,除了修改部分Bug外,它提供了用于支持Android平台的设备驱动,希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- i 属性:文件不能删、不能改名、不能写入;目录下不能新建/删除文件(只能改已有文件内容);
- a 属性:文件只能追加内容(如日志),但不能覆盖、清空或删除;目录里只能新增/修改文件,不能删。
只要其中任意一个存在,rm 就会失败。注意:这些属性只有 root 能设置或清除,普通用户即使有写权限也动不了。
顺藤摸瓜查父目录
有时文件本身没加锁,但它的上级目录被设了 i 或 a,也会导致删不掉:
- 比如
rm -rf /var/log/myapp/err.log报错,先lsattr /var/log/myapp; - 如果报错,再往上查
lsattr -d /var/log,甚至lsattr -d /var; - 只要路径中任一目录带
i,整个子树下的文件都受限制。
确认后用 chattr 解锁
查到问题属性后,用 chattr 去掉即可:
-
sudo chattr -i filename—— 清除不可修改锁; -
sudo chattr -a filename—— 清除仅追加限制; - 多个属性一起清:
sudo chattr -ia filename。
操作完再试 rm,通常就能成功。记得只对必要文件设这些属性,日常误操作风险较高。










