在远程服务器上意外执行的sudo rm / *


11

rm /*在远程Ubuntu服务器上以root用户身份登录时意外执行,并删除了几乎所有二进制文件,目前我无法通过ssh或ftp登录来恢复文件(并希望获得最好的恢复)。

有什么办法可以解决此问题,还是应该致电数据中心并要求格式?


2
您可以确认这是物理服务器还是虚拟服务器?另外,无论您是运行-r参数rm还是显示的命令。您的主机提供商是否提供任何方法来访问该特定计算机之外的磁盘映像?
Caleb

Answers:


26

rm /*应该删除很少。那里没有-r标记可以递归删除任何内容,没有它的目录将不会被删除(即使目录被删除,也只能删除空目录)。这个答案是基于您没有跑步的假设rm -rf /*

根文件系统中唯一的结果文件可能是指向内核和initrd的符号链接(尽管在我正在查看的一个Ubuntu系统上,它们不存在)或/lib6464位系统上的符号链接。

问题可能只是/lib64 -> /lib符号链接已被删除。但是,这很讨厌,因为几乎每个程序都将依赖于该符号链接:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

ld-linux是动态加载器,如果它不可用,则不能运行任何动态可执行文件。这将使登录非常困难,并且您可能根本无法登录。

一个救世主可能是busybox。运行此检查:

$ ldd /bin/busybox
    not a dynamic executable

在这种情况下,busybox应该是可运行的,但问题是如何运行它?

如果您有权访问引导加载程序提示符,则可以使用进行引导init=/bin/static-sh,其中static-sh是指向的符号链接busybox(检查是否/bin/static-sh存在-在我的系统上确实存在,但不是标准的Ubuntu)。 此错误表明该错误可用)

一旦有了root shell,就可以重新创建/lib64符号链接。您可能需要先将根文件系统重新安装为读/写。busybox应该内置了这些工具,您可以按以下方式运行它们:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

如果bash有效,则应解决此问题。


18

如果您需要从当前安装中恢复文件,请要求您的主机来帮助您。假设它是一台VM,则大约需要花费五分钟的时间来对磁盘进行映像,从头开始重新安装主机并将旧的磁盘映像转储到新的文件系统中。

如果您不需要任何东西,只需让他们重新安装即可。当您辛苦工作时,几乎总是更快的选择。


2
同意。如果他们是有能力的VM托管服务商,那么他们应该能够做到这一点。请尽快与他们联系,以确保他们仍具有预安装备份。
2011年

2

如果您只是删除了/ lib64到/ lib的符号链接,但仍打开了控制台,请执行以下操作:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

并且您应该能够再次正常运行命令。调整实际ld库的路径。您还可以通过在其前面加上完整的ld库路径来运行任何其他命令。


1

没有访问物理服务器的权限,您无能为力。


所以,那我应该要求一种格式,还是有一种方法可以恢复这些文件而不用鞭打其他所有东西呢?
蚂蚁

您会忘记这是一台虚拟服务器的可能性很高,在这种情况下,“物理服务器”除了可以访问更高级别的远程工具外,意义不大。
Caleb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.