无法删除我拥有的文件

无法删除我拥有的文件

我在 Windows 上同时使用 Cygwin 和 WSL(Ubuntu)。我运行了一个在 Cygwin 中创建文件的命令,然后当我在 WSL 中查看同一个文件时,它显示我拥有该文件以及包含该文件的目录,并且我对它拥有所有权限。但是,当我尝试删除它时,我收到权限被拒绝的提示

> sudo rm file1.txt
rm: cannot remove 'file1.txt': Permission denied
> whoami
jeff
> ls -la
total 4
drwxrwxrwx 1 jeff jeff 512 Dec  1 14:55 .
drwxrwxrwx 1 jeff jeff 512 Dec  1 14:55 ..
-rwxrwxrwx 0 jeff jeff 999 Dec  1 14:40 file1.txt
> cd ..
> ls -la
total 0
drwxrwxrwx 1 jeff jeff 512 Dec  1 14:55 .
drwxrwxrwx 1 jeff jeff 512 Dec  1 14:55 ..
drwxrwxrwx 1 jeff jeff 512 Dec  1 14:55 folder1

我尝试过rm使用和不使用 sudo 来运行、删除包含的文件夹以及放弃对文件和父文件夹的所有权,我还能尝试什么,假设使用 Cygwin 或 Windows 删除文件不是一个选项?

答案1

评论中的信息表明存在一个潜在的重大问题。首先,请记住使用您在评论中提供的信息编辑您的问题。对于任何理解您的问题的人来说,这都是至关重要的信息,应该是问题的一部分,而不是评论。(问题更新后,您可以随意编辑此答案以删除斜体区域)。

现在来谈谈可能出现的问题...

危险!危险!正如@Jeffmagma 在评论中所说,这看起来不像 WSL2。由于该文件暴露在C:\wsl\rootfs(在 Cygwin 中可见/cygdrive/c/wsl/rootfs),因此它看起来是 WSL1 文件系统,而不是 WSL2 虚拟驱动器(将显示为ext4.vhdx)。

这就属于此 Microsoft 警告

对于 Windows 上的 WSL 来说,有一条硬性规定:

%LOCALAPPDATA%在任何情况下,都不要使用 Windows 应用程序、工具、脚本、控制台等访问、创建和/或修改文件夹内的 Linux 文件。

在 Windows 中创建/更改 Appdata 文件夹中的 Linux 文件可能会导致数据损坏和/或损坏您的 Linux 环境,需要您卸载并重新安装您的发行版!

... 措辞其实有点不对。它引用了“AppData”,但那是默认WSL 安装的位置。

在这种情况下,您似乎已经在 处创建了一个 WSL1 实例C:\WSL。这完全没有错,但微软的警告仍然适用。尝试使用该路径中的 Windows 应用程序(例如 Cygwin)创建、更新或删除文件几乎肯定会导致问题。

不幸的是,在这种情况下,这听起来很可能会导致文件系统损坏。

为了尝试恢复,我会尝试:

  • wsl --export此 WSL1 实例的另一个
  • 然后将wsl --import其放入新实例中。我假设您熟悉此过程,因为它很可能是您C:\wsl\最初创建实例时所用的方法。我个人会将其添加--version 2到命令末尾--import
  • 查看 (a) 问题文件是否存在于新实例中(export实际上,它可能已被 剔除),以及 (b) 如果存在,查看是否可以删除它。

相关内容