Если у вас все еще есть корневая оболочка, у вас может быть шанс восстановить вашу систему. Допустим , что вы переместили все общие каталоги ( /bin
, /etc
, /lib
, /sbin
, /usr
- это те , которые могли бы сделать восстановление трудного) под /oops
.
Вы не сможете выполнить mv
команду напрямую, даже если вы укажете полный путь /oops/bin/mv
. Это потому, что mv
он динамически связан ; потому что вы переместили /lib
каталог, mv
не можете запустить, потому что он не может найти библиотеки, которые составляют часть его кода. На самом деле, это даже хуже: mv
не удается найти динамический загрузчик /lib/ld-linux.so.2
(имя может отличаться в зависимости от вашей архитектуры и варианта Unix, а каталог может иметь другое имя, например /lib32
или /lib64
). Поэтому, пока вы не переместили /lib
каталог обратно, вам нужно явно вызывать компоновщик и вам нужно указать путь к перемещенным библиотекам. Вот команда, протестированная на Debian squeeze i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Возможно, вам придется немного изменить это для других дистрибутивов или архитектур. Например, для CentOS на x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Когда вы что-то напортачили /lib
, полезно иметь статически связанный набор инструментов. Некоторые дистрибутивы (я не знаю о CentOS) предоставляют статически связанную копию Busybox . Также есть sash , отдельная оболочка с множеством встроенных команд. Если у вас есть один из них, вы можете сделать свое восстановление оттуда. Если вы не установили их до факта, уже слишком поздно.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Если у вас больше нет корневой оболочки, но у вас все еще есть слушающий демон SSH, и вы можете войти в систему как root через ssh, и у вас есть один из этих статически связанных наборов инструментов, вы можете войти в ssh. может работать, если вы переехали /lib
и /bin
, но нет /etc
.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Некоторые администраторы создают альтернативную учетную запись со статически связанной оболочкой или заставляют корневую учетную запись использовать статически связанную оболочку, просто для такого рода проблем.
Если у вас нет корневой оболочки и вы не приняли мер предосторожности, вам нужно будет загрузиться с живого CD / USB-диска Linux (любой будет работать, если только он достаточно недавний, чтобы иметь доступ к вашим дискам и файловым системам) и переместить файлы обратно.