mv libtinfo.so.5.bak libtinfo.so.5をsudoできません。

mv libtinfo.so.5.bak libtinfo.so.5をsudoできません。

1時間前に私mv /lib64/libtinfo.so.5 /lib64/libtinfo.so.5.bakと他の人がsshサーバーに障害を引き起こしました。エラーメッセージは次のとおりです。

-bash: 共有ライブラリの読み込みエラー: libtinfo.so.5: 共有オブジェクトファイルを開けません。そのファイルやディレクトリはありません。 10.60.242.30への接続が閉じられました。

このファイルをもう一度変更したいと思います。sudo mv /lib64/libtinfo.so.5.bak /lib64/libtinfo.so.5

bash:共有ライブラリの読み込みエラー:libtinfo.so.5:共有オブジェクトファイルを開けませんでした:そのファイルまたはディレクトリがありません。

デッドロックのsudoようですlibtinfo.so.5

私はそれを試しましたが、LD_PRELOAD=./libtinfo.so.5.bak sudo mv /lib64/libtinfo.so.5.bak /lib64/libtinfo.so.5動作しません。

誰でも私を助けることができますか?

ベストアンサー1

引数のリストを見てそれを解釈するためにシェルが必要だと判断するmvので失敗します。sudoその他シンプルコマンドが機能する可能性があります(たとえば、クイックチェックでsh実行中に中間が表示されないsudo visudo)。その場合は、単純なプログラムを作成してコンパイルし、を使用して実行できますsudo。たとえば、次のようになります。

#include <stdlib.h>
int main(void)
{
    rename("/lib64/tinfo.5.bak", "/lib64/tinfo.5" );
    return 0;
}

もう一つの可能​​性はPerlのようなスクリプトですが、ncursesに依存しないようです。

$ ldd `path perl`
        linux-vdso.so.1 =>  (0x00007ffd0f9f6000)
        libperl.so.5.14 => /usr/lib/libperl.so.5.14 (0x00007fcfc33ba000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcfc31b6000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcfc2f34000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcfc2d18000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcfc298b000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fcfc2754000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fcfc373c000)

サーバーに物理的にアクセスできる場合は、この回避策は必要ありません。必要(リカバリDVDをロードしてオフラインでサーバーを回復できるからです。)これを行わずにSSHアクセス権がある場合(Amazon AWSなど)、同様の回避策を使用する必要があります。

追加資料:

おすすめ記事