为什么我不能以 root 身份删除这个文件?

31 linux permissions rm files

我有 2 个文件的目录考试。我需要删除文件但权限被拒绝。即使rm -rf命令也无法删除这些文件。我以 root 用户身份登录。

在此处输入图片说明

Inv*_*ker 56

从 root 用户检查文件的属性

# lsattr 
Run Code Online (Sandbox Code Playgroud)

如果您注意到i(immutable) 或a(append-only),请删除这些属性:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Run Code Online (Sandbox Code Playgroud)

  • 哇,这是一个棘手的问题。感谢您发布此解决方案;我不知所措。我很确定这 * 以某种方式 * 与我的同音同步有关;它处于“未知”状态(由于多种原因),这意味着我无法删除的那些目录(通过统一)设置为仅附加(这是统一的典型)。但我不知道如何查看/重置仅附加模式!你是救星;我希望原始海报也解决了他们的问题。 (2认同)

Gil*_*il' 20

rm抱怨您无权删除文件的最常见原因是目录权限禁止您删除文件。为了删除文件,您需要对该目录的写权限。文件的权限无关紧要(在删除只读文件之前rm没有-f确认提示,但这只是确认,而不是限制)。在某些 Unix 变体上,例如 OSX(但不是 Linux),文件上的ACL可以防止删除;如果文件上有 ACL 条目,ls -l则将显示@在权限字段的末尾。

以 root 身份访问会绕过权限,因此即使在只读目录中,root 也可以删除文件。

来自的输出在权限列的末尾ls -l显示 a .。这表明该文件具有 SELinux 安全上下文。与基本权限和 ACL 不同,文件上的 SELinux 安全上下文可以控制允许谁删除它。此外,SELinux 不能总是被 root 绕过(可以让进程以用户 ID 0 身份运行,但其权限与 SELinux 策略设计者选择的一样少)。要查看 SELinux 上下文允许您做什么,请运行ls -lZ . exam_a.

另一个可以防止文件被删除的事情是它或包含它的目录是否具有 append-only 或 immutable Linux 属性。运行lsattr -d . exam_a以查看 Linux 属性。如果aori属性打开,您需要删除它 ( chattr -a -i . exam_a) 才能删除文件;只有 root 可以做到这一点。Root 无法绕过这些属性删除文件,必须先关闭这些属性。

阻止文件被删除的另一件事是文件系统是否以只读方式安装,但在这种情况下您会收到不同的错误消息。