Случайно выполненный sudo rm / * на удаленном сервере

Я случайно выполнил rm /* во время входа в систему как root на удаленном сервере Ubuntu и удалил почти все двоичные файлы, и в настоящее время я не могу войти в систему через ssh или ftp для восстановления файлов (и надеюсь на лучшее).

Есть ли способ как-то исправить этот беспорядок, или я должен позвонить в центр обработки данных и запросить формат?

rm /* следует удалить очень мало. Там нет флага -r который бы рекурсивно удалял что-либо, и без него каталоги не будут удалены (и даже если каталоги были удалены, только пустые могут быть удалены). Этот ответ основывается на предположении, что вы не запускали rm -rf /* .

Единственными файлами в корневой файловой системе последствий могут быть символические ссылки на ядро ​​и initrd (хотя в одной системе Ubuntu, на которую я смотрю, их не существует) или символическую ссылку /lib64 на 64-битных системах.

Проблема может заключаться в том, что символическая ссылка /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 на busybox (проверьте, что /bin/static-sh существует – это делается на моем но это не стандартная Ubuntu. Эта ошибка говорит о том, что она доступна.)

Если у вас есть корневая оболочка, вы можете повторно создать символическую ссылку /lib64 . Возможно, вам придется сначала переустановить корневую файловую систему как чтение / запись. busybox должен иметь встроенные инструменты, которые вы можете запустить следующим образом:

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

Если bash работает, проблема должна быть исправлена.

Если вам нужно восстановить файлы из текущей установки, попросите своего хоста помочь вам. Предполагая, что это виртуальная машина, требуется около пяти минут своего времени для создания образа вашего диска, переустановки вашего компьютера с нуля и удаления старого образа диска в вашей новой файловой системе.

Если вам ничего не нужно, просто попросите их переустановить. Практически всегда более быстрый вариант, когда вы плохо разбираетесь в вещах.

Если вы просто удалили символическую ссылку / lib64 в / lib, и у вас все еще есть консоль, просто выполните:

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

и вы должны снова иметь возможность запускать команды. Отрегулируйте путь к вашей фактической библиотеке ld. Вы также можете запустить любую другую команду, которая вам нужна, просто предварительно поместив ее в полный путь библиотеки ld.

Без доступа к физическому серверу вы не можете многое сделать.