如果我在 WSL 中执行 sudo rm -rf /mnt/c/* 会怎样?

如果我在 WSL 中执行 sudo rm -rf /mnt/c/* 会怎样?

只是出于好奇,在 WSL 中运行后会发生什么sudo rm -rf /mnt/c/*适用于 Linux 的 Windows 子系统)?它会删除我电脑中的整个 C 盘吗?WSL 会继续工作吗?如果会sudo rm -rf /*,它会删除/mnt文件夹吗?

答案1

sudo rm -rf /mnt/c/*在 wsl 中运行后会发生什么

是否sudo rm -rf /*会删除/mnt文件夹

两者都是类似的情况。

不,它不会删除整个驱动器,但仍会造成严重损害(正如@DanielB也指出)。看看(和怜悯)Ask Ubuntu 上的这个问题,用户无意中执行了您所要求的操作。

我开始收到 Windows 的各种其他错误

现在,即使在 Windows 中,一切都运行得很奇怪...太多东西被损坏了。

虽然 中的文件C:\Windows会受到保护以免被删除,但%userprofile%( C:\Users\<youruser>) 中的文件则不会,其中包括:

  • 大多数已安装应用程序的本地和远程设置,包括:

    • 您的“开始”菜单 ( %appdata%\Microsoft\Windows\Start Menu)
    • 您的浏览器设置、cookies、保存的密码等。
    • 讽刺的是,从商店安装的 WSL 发行版 ( %localappdata%\Packages\<distro_package\)
    • 您的桌面。
    • 等等等等。
  • 文档、图片、下载、音乐等。

  • 存储在 OneDrive 上的文件,通常位于%userprofile%\OneDrive。请注意,此处删除的文件进入 OneDrive 回收站,与通过 WSL 删除的普通文件不同。

简而言之,这将是灾难性的。Windows 应该仍然可以启动,但您需要创建一个新用户才能恢复。

但是,如果您在 UAC 提升的(管理)控制台中运行 WSL,则损害会更严重。它仍然无法删除正在使用的文件,但它会擦除足够多的/mnt/c/Windows/C:\Windows以使其无法启动。

答案2

在 WSL 中拥有 root 权限并不意味着您是 Windows 上的管理员。因此,它不会删除整个 C:。但是,它可能会删除足够多的共享文件和/或您用户配置文件中的内容,从而造成相当大的损害。您仍然可以删除那里的很多内容。

这可能会导致您无法再登录,或者您安装的某些软件出现故障。

受保护的文件会发生以下情况:

daniel@db-d-18:/mnt/c/Program Files/Firefox Developer Edition$ sudo rm install.log
rm: cannot remove 'install.log': Permission denied

当然,你完全可以通过这种方式破坏你的 WSL 发行版。

相关内容