无法删除 Fedora 上的文件

无法删除 Fedora 上的文件

我有一个具有以下权限的文件:

-rwSr-s---. 1 1634630331 1818884080 118784 Jun 29 1970 DailyUpdateClass.class

如果我尝试使用 root 登录删除该文件,则会出现错误。

rm: cannot remove ‘model/DailyUpdateClass.class’: Operation not permitted

我不能改变所有权,也不能做任何其他事情。

我把它发布在堆栈溢出并尝试了一些事情,但到目前为止没有任何帮助。

有人建议我在 Unix Stack Exchange 上尝试这个,所以请求你的帮助。

答案1

多种可能性:

  • 文件权限行中的尾点-rwSr-s---.表示扩展权限,SE Linux(用 确认ls -lZ)或 ACL 样式权限(用 确认getfacl)可能会阻止 root 覆盖。
  • 该文件已被设置为不可变chattr;确认文件系统属性lsattr
  • 该文件位于 NFS 文件系统上,该文件系统使用将root_squash 远程 root 用户重新映射到非特权帐户的选项导出。以实际文件所有者身份运行rm命令,例如sudo -u <file_owner> rm filename
  • 该文件位于只读文件系统上,请使用以下mount命令确认或/proc/mounts
  • IIRC 您不能删除代表内核设置的特殊设备条目(例如procsysfs文件系统上的文件),是这样的吗?

答案2

您的文件具有immutable扩展属性集,这就是您无法删除它的原因。

lsattr返回文件的扩展属性:

$ lsattr model/DailyUpdateClass.class
-u-Diad--j------ DailyUpdateClass.class

您需要破译所有字母 ( -u-Diad--j)

的手册页lsattr将告诉您查看手册页forchattr用于扩展属性的描述。我在这里列出了相关的:

u当删除具有该属性集的文件时,其内容将被保存。这允许用户请求取消删除。注意:请务必阅读本文档末尾的错误和限制部分。

当修改了设置了属性的目录时D,更改会同步写入磁盘;这相当于 dirsync应用于文件子集的挂载选项。

一个D有点令人担忧 - 它显然只用于目录,但你有一个文件。

具有该属性的文件i无法修改:无法删除或重命名,无法创建到该文件的链接,也无法向该文件写入任何数据。只有超级用户或拥有 CAP_LINUX_IMMUTABLE 能力的进程才能设置或清除该属性。

设置了该属性的文件a只能以追加模式打开进行写入。只有超级用户或具有该能力的进程 CAP_LINUX_IMMUTABLE才能设置或清除该属性。

当 dump(8) 程序运行时,具有该属性集的文件d不是备份的候选者。

如果使用或选项挂载文件系统,则具有该属性的文件j在写入文件本身之前会将其所有数据写入 ext3 或 ext4 日志 。当使用该选项安装文件系统时, 所有文件数据都已记录,并且该属性无效。只有超级用户或具有该能力的进程 才能设置或清除该属性。data=ordereddata=writebackdata=journalCAP_SYS_RESOURCE

要修复这些问题,请使用chattr.例如,要删除不可变和附加属性:

# chattr -ia model/DailyUpdateClass.class

相关内容