LD_PRELOADを修正するには?

LD_PRELOADを修正するには?

LD_PRELOADを変更しましたが、SSHに接続したりls、cp、mvなどを使用したりすることはできません。次のように表示されます。

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

私がしたことは、次のファイルをからに移動し、次のように書きまし/lib/x86_64-linux-gnu/root

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

しかし、今は私の仕事をキャンセルすることはできません。ご存知ですか?

ベストアンサー1

いくつかのライブラリがありません。たとえば、最初のエラーメッセージにはがls必要ですlibrt.so.1。シンボリックリンクとして扱うことはできますが、シンボリックリンクのターゲットを移動した/rootため失敗します。以下は、あなたが持っている必要のある例です:

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

まだシェルがある場合は、rootライブラリを再度コピーしてみることができます。次のエイリアスが必要です。

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"; }

解決できることは次のとおりです。

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

設定を解除しLD_PRELOADて復元されたことを確認してください。

それ以外の場合は、回復CDから復元する必要があります。または再インストールしてください。

おすすめ記事