システムがbusybox
インストールされている場合は、これを使用して元に戻すことができます。
busybox
多くの標準ユーティリティが組み込まれたバイナリです。物事のようなmv
、sh
、ls
、など
Pavelの回答に対するコメントから、すべてがに終わったように思えます/var
。やってみることができ/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
ます。これで、システムのほとんどが再び動作可能になります。として/tmp
も存在するようなディレクトリがいくつかある/var/tmp
ため、単に移動することはできません。うまくいけば、それらはmv
不平を言ったものであり、彼らは一人に残されました。
ルートシェルを取得する
また、ルートシェルを失ったとのことsu
で、ld-linux
ライブラリエラーが発生しています。以下を使用できる場合があります。
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/su
注:これを試みても機能しません。これは、su
内のいくつかのファイルが必要です/etc
(passwd
、pam.d
、など)を。/etc
それでも元のままであれば、これは成功する可能性が高いでしょう。
busyboxなし
busyboxが利用できない場合は、次の場合と同じld-linuxトリックを使用できる場合がありますsu
。
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
ライブCDから
コメントで説明したように、ルートシェルを失った場合、かなり行き詰まっています。基本的にこれを修正するにはroot権限が必要です。そこにたどり着く唯一の方法は、パーミッションなどのユーティリティを用意するsu
かsudo
、これらを現時点でエスカレートするか、すでにrootとして実行されている別のプログラムをハイジャックすることです(何が実行されているかによって異なります)。
これにより、唯一のオプションがライブCDになります。ライブCD(またはライブUSBなど)で起動したら、ルートボリュームをマウントし、影響を受けるディレクトリ/var
をの元のホームに戻し/
ます。
何が起こったかの概要
folder/*
folder/foo
およびなどの何かに拡張されますfolder/bar
。
/*
のようなものに拡張されたでしょう/bin
/lib32
/lib64
/etc
/home
/root
/var
。それ/var
が最後のアイテムであることに注意してください。
したがって、シェルがこれらのグロブをすべて展開すると、次のようになります。
mv folder/foo folder/bar /bin /lib32 /lib64 /etc /home /root /var
/var
リストの最後のアイテムと同様に、すべてがそれに移動しました。
/var/bin/su
エラーの理由/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Linuxのほとんどすべてのバイナリが動的にリンクされld-linux
ます。ld-linux
バイナリが必要とする他のライブラリをロードするライブラリです。あなたのシステムでは、これはに住んでい/lib64/ld-linux-x86-64.so.2
ます。このディレクトリが移動したため、動的にリンクされた実行可能ファイルは機能しなくなります。
busyboxが機能する理由は、busyboxが静的にリンクされているためです。使用しませんld-linux
。
/var/bin/su
直接走れない?