不小心在我的 Arch Linux 安装上运行了 sudo rm /*

Shr*_*thi 21 arch-linux sudo data-recovery rm

我不小心执行sudo rm /*而不是sudo rm ./*在我想删除其内容的目录中,我基本上搞砸了我的系统。

诸如lsgrep等的基本命令都不起作用,我的应用程序也没有打开,例如 Chromium、slack、图像查看器等。

我试图在互联网上查找我的问题并找到了这个问题,但是那里的解决方案都不适合我。

我在 Arch Linux 桌面上,自从这件事发生后我还没有退出我的系统,因为我担心我将无法重新登录,如这里建议的那样。另外,如果有帮助的话,我没有 Arch Linux 映像文件的实时 USB。

关于我应该如何进一步使我的系统恢复正常的任何帮助,将不胜感激。谢谢!

编辑:我附上了一些命令的输出:

$ echo /*

/boot /dev /etc /home /lost+found /mnt /opt /proc /root /run /srv /sys /tmp /usr /var
Run Code Online (Sandbox Code Playgroud)
$ echo /usr/*

/usr/bin /usr/include /usr/lib /usr/lib32 /usr/lib64 /usr/local /usr/sbin /usr/share /usr/src
Run Code Online (Sandbox Code Playgroud)

另外, echo /usr/bin/*给我一长串目录格式/usr/bin/{command},其中 {command} 是我可以从终端运行的任何命令,如果我没有弄乱我的系统。

如果需要任何其他信息,请告诉我!

ste*_*0xC 45

Arch Linux 在 中有四个符号链接/

  • bin -> usr/bin
  • lib -> usr/lib
  • lib64 -> usr/lib
  • sbin -> usr/bin

您应该能够重新创建它们(使用 Live-USB 或紧急外壳)或直接调用链接器(具有 root 权限并/作为工作目录):

/usr/lib/ld-linux-x86-64.so.2 /usr/bin/ln -s usr/lib lib64
Run Code Online (Sandbox Code Playgroud)

这应该会恢复正在运行的系统中的基本功能。然后恢复其他符号链接应该很容易。

如果您没有 root 权限,您可以重新启动到恢复 shell并修复那里的问题。

为什么/usr/bin/ls和其他命令会失败?

如果没有/lib64符号链接,动态链接程序将找不到动态链接器/加载器,因为路径被硬编码为/lib64/ld-linux-x86-64.so.2(cf ldd /usr/bin/ln)。

  • @ShreyTripathi 重新启动后,您将进入紧急 root shell,您可以在其中挂载 root 分区并解决问题。你不能用 `sudo` 运行使用它,因为 setuid 二进制文件不能那样工作,所以如果你没有打开 root shell,你现在没有有效的方法来获取 root。 (4认同)