Como corrigir LD_PRELOAD?

0

Eu mudei o LD_PRELOAD e agora, eu não posso fazer nada, como conectar ao SSH ou usar o ls, cp, mv e assim por diante, é me mostrar:

ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory

O que eu fiz, movi esses arquivos abaixo de /lib/x86_64-linux-gnu para /root e, em seguida, escrevi o seguinte:

LD_PRELOAD=/root/libc-2.19.so:/root/libdl-2.19.so:/root/libm-2.19.so:/root/libpthread-2.19.so:/root/librt-2.19.so bash

mas agora não posso desfazer o meu trabalho, alguma ideia?

    
por Freeman 09.06.2017 / 09:10

1 resposta

0

Você está perdendo partes das bibliotecas. Por exemplo, na sua primeira mensagem de erro, ls precisa de librt.so.1 . Ele pode achar isso como um link simbólico, mas você moveu o alvo do link simbólico para /root , então ele falha. Veja um exemplo do que você deve ter:

ls -l /lib/x86_64-linux-gnu/librt*
-rw-r--r-- 1 root root 31744 Dec  4  2016 /lib/x86_64-linux-gnu/librt-2.24.so
lrwxrwxrwx 1 root root    13 Dec  4  2016 /lib/x86_64-linux-gnu/librt.so.1 -> librt-2.24.so

Se você ainda tiver um root shell, tente copiar as bibliotecas novamente. Você precisará deste alias:

mcp() { src="$1" dst="$2"; test -f "$src" || return 1; while :; do read -N 10240 -r data; test -z "$data" && break; echo -n "$data"; done <"$src" >"$dst"; }

E aqui está como você tentaria a correção:

cd /root
for lib in lib*.so; do mcp "$lib" /lib/x86_64-linux-gnu/"$lib"; done

Desmarque seu LD_PRELOAD e veja se você se recuperou.

Em caso de falha, será necessário restaurar a partir de um CD de recuperação. Ou reinstale.

    
por 09.06.2017 / 11:12

Tags