Answers:
从root用户检查文件的属性
# lsattr
如果您注意到i
(不可变)或a
(仅追加),请删除以下属性:
# man chattr
# chattr -i [filename]
# chattr -a [filename]
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
。
可以防止文件被删除的另一件事是,该文件或包含该文件的目录是否具有仅追加或不可变的Linux属性。运行lsattr -d . exam_a
以查看Linux属性。如果a
or i
属性处于启用状态,则需要将其删除(chattr -a -i . exam_a
)才能删除文件。只有root可以做到。根无法绕过这些属性来删除文件,必须先关闭这些属性。
防止删除文件的另一件事是,如果文件系统以只读方式安装,但是在这种情况下,您会收到其他错误消息。
ls -la
,以便我们可以看到.
(目录)上的权限。