オペレーティングシステムはCentos 6.5 64ビットです。
tarファイルをダウンロードしましたが、解凍mv
したいです。
私は解凍し、予期せず(rootとして)実行しましたが、mv folder/* /*
代わりにmv folder/* .
bashがいくつかのファイルを上書きできないと言った後、他のファイルに対する権限を要求しました。 Ctrl-cを押して終了します。
ターミナルセッションを開いたままログアウトしましたsu
。
shell
現在、ほとんどのコマンドにアクセスできず、ls
どのディレクトリにもアクセスできませんsu
。
Webサーバーとサービスがまだ実行されているようです。実行できるコマンドはほとんどなく、これがそのうちの1つであり、実行しようとするとcd
エラーが発生します。cd
/etc
/bin
no directory found
編集する/
(bin
、、、、)で見つからないフォルダがすべてディレクトリetc
に移動されたことを確認し、試した結果、次のようになりました。
lib64
root
sbin
/var
/var/bin/su
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
答え1
システムにインストール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が利用できない場合は、次の同じ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から
説明で説明したように、ルートシェルを失うと問題が発生します。既定では、この問題を解決するにはルートアクセスが必要です。これを達成する唯一の方法は、同じユーティリティを使用するか、権限を昇格するかsu
(sudo
この時点ではどちらも機能しません)、すでにrootとして実行されている他のプログラムをハイジャックすることです(実行中のプログラムによって異なりますが不可能)。 。
この場合、唯一のオプションはLive CDです。ライブCD(またはライブUSBなど)から起動したら、ルートボリュームをマウントし、影響を受けたディレクトリを/var
元のディレクトリに戻します/
。
起こったことのまとめ
folder/*
folder/foo
と同じものに拡張されますfolder/bar
。
/*
そのようなものに拡張されます/bin
/lib32
/lib64
/etc
/home
/root
/var
。/var
最後の項目なので参考にしてください。
したがって、シェルがこれらのすべてのglobを拡張すると、次のコードが実行されます。
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
。
答え2
mv folder/* ./*
また間違っています。実行するコマンドの意味についてさらに注意する必要があります。 3つ以上の引数を持つコマンドは、mv
最後の引数を除くすべての引数を受け入れ、そのコマンドが指すパスを最後の引数で指定されたディレクトリに移動します。
すべてのディレクトリを移動する(隠しディレクトリを除く)フォルダ現在のディレクトリに移動するには、次のものを使用する必要があります。
mv folder/* .
オペレーティングシステムが破損しています。シェルと組み込みコマンドは引き続き機能します。 Live CDを起動してディレクトリを再度移動する必要があります。再起動しなくても問題を解決できるように、ファイルを移動/名前変更するbash組み込みコマンドがわかりません。詳細については、Patrickの回答を参照してください。
答え3
誤って/usrを/usr_oldに移動しましたが、すべてが中断されました。幸いなことに、プロンプトに留まり、次のコマンドを実行してusrフォルダを復元できました。
LD_LIBRARY_PATH=/usr_old/lib64 /usr_old/lib64/ld-linux-x86-64.so.2 /usr_old/bin/mv /usr_old /usr
答え4
重要
ここにありますが、正常に動作しないとコマンドをmv
実行できず、ルート()にフォルダがなくなった場合、まず、あれば修正されるまで終了しないでください。回復できません。リモートで接続している場合は、切断するとサーバーを離れることはできません。実行中のほとんどのサービスは問題ありません。 Patrickが提案した多くの解決策の1つを試してみてください。しかし、私のように問題が発生した場合は、物理的なアプローチが必要になります。shell
/
SU
SU
ssh
reboot
コンピュータから再起動しました。予想通りカーネルパニックが発生しました。
私はそれが非常に簡単な修正だと思いました。 livecdを接続して構造モードに入るのは簡単です。その後、ルートディレクトリをマウントする必要があります。ただし、単純なインストールコマンド以上が必要です。
これは多くの人のように私もlvmファイルシステムを持っていて、このような構造を処理しなければならなかったのは今回が初めてだからです。私が何をすべきかを調べるためにオンラインで検索する必要がありました。この情報をこの記事に含めました。これが私のトラブルシューティングプロセスです。
1) Centos_6.4_min CDを挿入します。
2) GUI インターフェイスで何をしたいか尋ねて Rescue を選択します。
3) Rescue は現在システムをマウントしようとしますが、Linux パーティションがないと表示されます。
shell
4) オプションが表示されたら、Enter を選択します。
この時点で私はシステムをインストールするために多くの方法を試しましたが、運がありませんでした。 (lvmのため)次の手順を実行する必要があると確信しています。
5) 私の本をスキャンし、
lvmdiskscan
6) lvscan を実行すると、「Inactive」と表示されたすべての列が表示されます。
lvscan
7) デバイスモジュールをロードします。
modprobe dm-mod
8) 既存ボリュームをアクティブボリュームに変更
vgchange -ay
9)lvscan
再度実行すると、すべてのプロジェクトが「アクティブ」と表示されます。
10) マウントポイントを作成し、論理パーティションをマウントします。
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11)フォルダを後ろに移動します(他のフォルダが必要な場合があります)。
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)reboot
13)成功!