我有目录 exam,其中有 2 个文件。我需要删除文件,但权限被拒绝。即使rm -rf
命令也无法删除这些文件。我以 root 用户身份登录。
答案1
从 root 用户检查文件的属性
# lsattr
如果您注意到i
(不可变)或a
(仅附加),请删除这些属性:
# man chattr
# chattr -i [filename]
# chattr -a [filename]
答案2
rm
抱怨您无权删除文件的最常见原因是目录的权限禁止您删除该文件。为了删除文件,您需要对该目录的写权限。文件的权限无关(删除只读文件之前rm
不提示确认,但这只是确认,而不是限制)。-f
在某些 Unix 变体上,例如 OSX(但不是 Linux),前交叉韧带在文件上可以防止其被删除;如果文件上有 ACL 条目,则会在权限字段的末尾ls -l
显示。@
以 root 身份访问会绕过权限,因此 root 甚至可以删除只读目录中的文件。
输出在权限列的末尾ls -l
显示。.
这表明该文件具有 SELinux 安全上下文。与基本权限和 ACL 不同,文件上的 SELinux 安全上下文可以控制允许谁删除它。此外,SELinux 并不总是能被 root 绕过(可能有一个进程以用户 ID 0 运行,但具有 SELinux 策略设计者选择的尽可能少的权限)。要查看 SELinux 上下文允许您执行哪些操作,请运行ls -lZ . exam_a
.
另一件可以防止文件被删除的事情是它或包含它的目录是否具有仅追加或不可变的属性Linux属性。运行lsattr -d . exam_a
查看Linux属性。如果a
或i
属性打开,您需要将其删除 ( chattr -a -i . exam_a
) 才能删除文件;只有 root 才能做到这一点。 Root 无法绕过这些属性来删除文件,必须先关闭这些属性。
阻止文件被删除的另一件事是文件系统是否以只读方式安装,但在这种情况下您会收到不同的错误消息。