即使以 root 身份也无法删除、更改文件或修改文件权限

即使以 root 身份也无法删除、更改文件或修改文件权限

我想删除一个网站的备份(使用 FTP 镜像wget),但只有一个文件,名为js_composer.lessresists。我可以在同一目录中创建新文件并删除它们,因此问题可能出在文件本身上。

不可能强制删除

$sudo rm -f js_composer.less
rm: cannot remove 'js_composer.less': Operation not permitted

我无法改变它权限

$sudo chmod 644 js_composer.less
chmod: changing permissions of 'js_composer.less': Operation not permitted

我无法改变它所有者

$sudo chown myuser:mygroup js_composer.less
chown: changing ownership of 'js_composer.less': Operation not permitted

我无法列出文件的属性

$sudo lsattr js_composer.less 
lsattr: Operation not supported While reading flags on js_composer.less

ls我可以看出它是一个命名管道(FIFO),粘着位(限制删除标志)已应用:

p-ws-wS--t 41284 30917 5212 3944510081 márc  14  1902 js_composer.less

现在我找不到任何方法可以删除此文件。我还能尝试什么?

答案1

这是一个具有无意义的权限和 41284 个硬链接的项目。它是一个命名管道,据称大小为 3.7 GiB,比命名管道应有的大小大 3.7 GiB(它不应该首先是一个命名管道)。

这表明您不应该尝试删除它 - 相反,您应该fsck针对分区运行并让它修复它能找到的任何文件系统损坏。然后您也许可以简单地删除坏文件。

如果这发生在你的根文件系统上,请使用内核选项重新启动fsck.mode=force。如果文件系统是独立的(例如,你有一个独立的 /home 分区),你也可以重新启动进入恢复模式并fsck <device>手动运行。

检查完成后,尝试重新启动进入正常模式并再次删除该文件。


最后,如果没有其他帮助,大多数文件系统都有“debugfs”类型的工具,可以直接编辑和删除 inode 和目录条目,绕过内核的文件系统代码。例如,ext4 有debugfs,XFS 有xfs_db。使用它们将是一个单独的线程......

相关内容