ОС Centos 6.5 64-битная
Я скачал файл tar и хотел распаковать mv
его.
Я untared, затем случайно (как root) запустил mv folder/* /*
вместо mv folder/* .
bash, сказал, что не может перезаписать некоторые файлы, затем спросил разрешение для других. Я ctrl-c'd вне.
Я оставил терминальную сессию открытой, но вышел su
.
Теперь я потерял доступ к большинству shell
команд, не могу ls
каталоги и не могу вернуться к ним su
.
Веб-сервер и сервисы все еще работают. Я могу запустить очень мало команд, cd
это одна из них, и когда я пытаюсь сделать cd
это /etc
или /bin
с ошибками no directory found
.
EDIT Просто заметил , все папки , отсутствующие /
( bin
, etc
, lib64
, root
, sbin
) был перемещен в /var
каталог, я попробовал /var/bin/su
и получить:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
/var/bin/su
прямо?/var/bin/su: user root does not exist
Я думаю, мы определили, что это невозможно, потому что / etc находится в / var / etcОтветы:
Если ваша система
busybox
установлена, вы можете использовать это, чтобы вернуть вещи обратно.busybox
это бинарный файл со множеством стандартных утилит, встроенных в него. Такие вещи , какmv
,sh
,ls
и т.д.Из вашего комментария к ответу Павла кажется, что все закончилось
/var
. Вы можете попробовать сделать/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
. Это должно снова привести в действие большую часть вашей системы. Есть несколько каталогов,/tmp
которые также существуют/var/tmp
, так что вы не можете просто переместить их. Надеюсь, это те, на когоmv
жаловались, и они остались одни.Получение корневой оболочки
Вы также упомянули, что потеряли корневую оболочку, и это
su
приводит кld-linux
ошибке библиотеки. Вы можете использовать следующее:Примечание: при попытке это не работает. Это происходит потому , что
su
требует несколько файлов в/etc
(passwd
,pam.d
и других). Если бы/etc
все еще оставались нетронутыми, у этого был бы хороший шанс на успех.Без занятых
Если у вас нет busybox, вы можете использовать тот же трюк ld-linux, что и для
su
:С живого CD
Как обсуждалось в комментариях, если вы потеряли корневую оболочку, вы в значительной степени застряли. В основном, чтобы это исправить, вам нужны привилегии root. Единственный способ добиться этого - использовать такую утилиту, как
su
илиsudo
повысить ваши разрешения (обе на данный момент не работают), или взломать другую программу, уже запущенную от имени пользователя root (в зависимости от того, что запущено, что вряд ли возможно).Это оставляет единственную возможность быть живым CD. Загрузившись на live CD (или на live USB, или что-то еще), просто смонтируйте корневой том и переместите затронутые каталоги
/var
обратно в исходную папку/
.Сводка того, что случилось
folder/*
расширился бы до чего-то такого какfolder/foo
иfolder/bar
./*
расширился бы до чего-то вроде/bin
/lib32
/lib64
/etc
/home
/root
/var
. Отметив, что/var
это последний пункт.Поэтому, когда оболочка расширила все эти глобусы, она запустила бы что-то вроде этого:
Как
/var
и последний элемент в списке, все было перенесено в него.Почему
/var/bin/su
ошибки с/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Почти все двоичные файлы в Linux динамически связаны с
ld-linux
.ld-linux
является библиотекой, ответственной за загрузку других библиотек, необходимых для двоичного файла В вашей системе это живет в/lib64/ld-linux-x86-64.so.2
. Поскольку этот каталог был перемещен, любой динамически связанный исполняемый файл больше не будет работать.Причиной работы busybox является то, что busybox статически связан. Это не использовать
ld-linux
.источник
busybox
Похоже, идеальное решение, к сожалению, не установлено, будет после того, как это будет исправлено ... в то же время, есть ли в любом случае правильный путь для выполнения команд/var/lib64/ld-linux-x86-64.so.2
вместо/lib64/ld-linux-x86-64.so.2
? Кажется, это то, что убивает команды/var/bin
/etc
которых не существует (/etc/passwd
,/etc/nsswitch
,/etc/pam.d
, и , возможно , больше). Дляsu
работы/etc
необходимо вернуться в исходное местоположение. Если у вас нет корневой оболочки, я думаю, вы застряли :-(mv folder/* ./*
тоже неправильно Вы должны быть более осторожны с семантикой команд, которые вы запускаете. Командаmv
с более чем двумя аргументами просто принимает все аргументы, кроме последнего, и перемещает пути, на которые они указывают, в каталог, указанный в последнем аргументе.Чтобы переместить все каталоги (кроме скрытых) из папки в текущий каталог, вы должны использовать:
Вы сломали свою работающую систему. Ваша оболочка и встроенные команды продолжают работать. Вам нужно будет загрузить live CD и переместить каталоги обратно. Я не знаю встроенной функции bash для перемещения / переименования файлов, которая позволила бы вам исправить ситуацию без перезагрузки, подробности см. В ответе Патрика.
источник
mv
команда для перемещения всех файлов и папок из папки в текущую директорию?/
и/var
каталоги могут находиться в разных разделах, и в этом случае вам нужно смонтировать оба.Я случайно переместил / usr в / usr_old и все пошло к черту. К счастью, я остался в приглашении и смог выполнить следующую команду, чтобы восстановить папку usr:
источник
ВАЖНО! Если вы здесь и работали
mv
неправильно, не можете запускатьshell
команды и папки отсутствуют в корневом каталоге (/
), прежде всего, если у вас естьSU
, НЕ завершайте работу,SU
пока не исправите, потому что вы не получите его обратно. Если вы подключены удаленно, если вы отключаетесь, вы не сможетеssh
оставить сервер в покое, не работайтеreboot
- большинство работающих служб должны быть в порядке. Вы можете попробовать одно из многих решений, предложенных Патриком ... однако вам, вероятно, понадобится физический доступ, если вы облажались, как я.Оказавшись перед машиной, я ее перезагрузил. Как и ожидалось, я получил панику ядра.
Я думал, что это будет довольно легко исправить, вставить livecd, войти в режим восстановления ДО ЭТОГО ТОЧКИ, ЭТО БЫЛО ЛЕГКО - тогда мне пришлось попытаться смонтировать мой корневой каталог. Однако мне нужно было больше, чем простая команда монтирования.
Это потому, что у меня, как и у многих людей, была файловая система lvm, и я впервые столкнулся с таким спасением. Мне пришлось искать в Интернете, чтобы увидеть, что мне нужно сделать. Я собрал эту информацию в этом посте. Здесь был мой процесс, чтобы исправить мою проблему.
1) Вставлено Centos_6.4_min кд
2) Интерфейс GUI спросил, что я хотел сделать, выбрал Rescue
3) Rescue попытался смонтировать текущую систему, но указал, что у меня нет разделов Linux
4) Выберите, чтобы ввести,
shell
когда была предоставлена опцияВ этот момент я много чего пробовал, чтобы смонтировать систему, но не повезло, я почти уверен, что это все шаги, которые мне пришлось предпринять (из-за lvm):
5) Отсканировал мои тома,
lvmdiskscan
6) Запустил lvscan, показал все перечисленные как «неактивные»
lvscan
7) модуль загрузки устройства
modprobe dm-mod
8) изменить существующие тома на активные
vgchange -ay
9)
lvscan
Снова побежал , теперь все предметы перечислены как "активные"10) Создана точка монтирования и смонтирован логический раздел
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11) Перемещенные папки назад (вам могут понадобиться другие):
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)
reboot
13) УСПЕХ!
источник