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から復元する必要があります。または再インストールしてください。