LINUX.ORG.RU

удалил - libc - что делать ?


1

0

ручки шаловливые удалили в ssh сессии /lib/libc на удаленном компе

теперь в сеансе ssh не могу практически ничего сделать (хотя сессия не оборвалась, комп как роутер еще работает)

имею error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

какой простейший путь решения этой проблемы - у меня остался deb пакет с libc - я бы мог разархивировать и ручками копировать эту главнейшую библиотеку в /lib или если получится - через dpkg -i

пока вижу 2 пути - качнуть загрузочный дистр - Damn Small Linux и все это сделать, загрузившисть c него - но получится ли это через chroot ?

- возможно ли в еще существующей ssh сессии c этим компом что-то сделать - восстановить libc ?

anonymous

> Damn Small Linux и все это сделать, загрузившисть c него - но получится ли это через chroot?

Да. Только не через chroot. В чрут тебе не даст перейти отсутствующая libc.so.6

> возможно ли в еще существующей ssh сессии c этим компом что-то сделать - восстановить libc?

Если есть где-то распакованная libc.so, то можешь (LD_PRELOAD). Иначе - нет.

P.S. Перед знаком вопроса пробел не ставится :)

Deleted
()
Ответ на: комментарий от anonymous

>а как по другому - не черз chroot ?

Распаковывать в том же DSL deb libc'а и ручками скопировать необходимые библиотеки из папки с распакованными файлами в /usr/lib той системы, в которой нету libc'а.

А потом уже или chroot, или reboot в исходную систему, а там уже можно переустановить libc через apt/dpkg.

DiGital
()
Ответ на: комментарий от Deleted

Всётаки лялих -- это бяка. Поясняю: в продуманных системах ``ldd /bin/*'' говорит только ``not a dynamic executable'' на _всё_, что там лежит, ибо Subj.

beastie ★★★★★
()

в deb может еще и лежать libc.so.6 в /lib/cmov/i686


Sylvia ★★★★★
()

А у тебя случаем busybox не установлен? Он обычно собран статически всё-в-одном и должен нормально работать без libc.so.

Deleted
()
Ответ на: комментарий от anonymous

>> нет, busybox нет меня - дебиан stable + bash

А в запущенной ssh-сессии работает echo? Поидее должен. В общем, мегаплан спасения:

1) Найди статически собранный бинарник busybox под твою систему.
2) Преобразуй этот бинарник в набор команд примерно так:

od -v -A n -t o1 /bin/bb | sed "s/ *\([0-7]*\) */\\\\0\1/g" | sed "s/^\(.*\)$/echo \"\1\" >> \"\${FNAME}\"/" > script.sh

3) На "почти убитой" системе найди любой ненужный исполнимый файл (с битом +x).
4) Очисти его:

echo -n > /bin/some

5) Задай имя файла для скрипта:

FNAME="/bin/some"

6) Вставь в ssh-сессию команды из script.sh
7) Запускай /bin/some
8) PROFIT^WИмеем работающий бизибокс

=)

Deleted
()
Ответ на: комментарий от Deleted

Блин! Не

od -v -A n -t o1 /bin/bb | sed "s/ *\([0-7]*\) */\\\\0\1/g" | sed "s/^\(.*\)$/echo \"\1\" >> \"\${FNAME}\"/" > script.sh

а

od -v -A n -t o1 /bin/bb | sed "s/ *\([0-7]*\) */\\\\0\1/g" | sed "s/^\(.*\)$/echo -n \"\1\" >> \"\${FNAME}\"/" > script.sh

Deleted
()
Ответ на: комментарий от Deleted

После работы голова не варит совсем...

od -v -A n -t o1 /bin/bb | sed "s/ *\([0-7]*\) */\\\\0\1/g" | sed "s/^\(.*\)$/echo -en \"\1\" >> \"\${FNAME}\"/" > script.sh

Надеюсь что это окончательный вариант =).

Deleted
()

Скопируй с удаленного компа с помощью scp libc.so на ту машину.

dikiy ★★☆☆☆
()

Или запусти sash, и с него с помощью встроенного mount смонтируй удаленный nfs том, на котором libc есть.

dikiy ★★☆☆☆
()
Ответ на: комментарий от Lumi

Извиняюсь сразу за невнимательность. По поводу именно текущего $SUBJ: Когда сидел на LFS делал статически собранный /{,s}bin и то же самое, но динамически уже в /usr/bin. Соответственно у юзеров shell был /usr/bin/bash, у root /bin/bash.

Lumi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.