ディレクトリ/usr
の名前を誤って/usr_bak
に変更しました。
元に戻したいので、/usr_bak/bin
に$PATH
を追加して、システムがコマンドSudo
を見つけられるようにします。
しかし今Sudo mv /usr_bak /usr
は私にエラーを与えます:
Sudo: error while loading shared libraries: libsudo_util.so.0: cannot open shared object file: No such file or directory
システムを再インストールする以外に、/usr_bak
を/usr
に名前変更する方法はありますか?
Rootのパスワードを設定したので、Ubuntuにデフォルトでインストールされているsu
およびbusybox
を使用します。 su
に必要なライブラリはすべて/lib
にあります。 Busyboxは静的にリンクされたユーティリティのコレクションであるため、ライブラリの欠落は問題になりません。行う:
su -c '/bin/busybox mv /usr_bak /usr'
(Busybox自体にもsu
アプレットがありますが、/bin/busybox
バイナリはsetuidではないため、rootとして実行しない限り機能しません。)
Rootパスワードがない場合は、 あなたはおそらく ここで(Gillesは、これはSudoのようなsetuidバイナリでは機能しないと言っています)再起動し、GRUBメニューを編集して、カーネルパラメータとしてLD_LIBRARY_PATH
を使用してGillesのソリューションを使用するか、またはinit=/bin/busybox
で起動し、フォルダを元に戻します。
muru's answer に加えて:
システムを修復するためにレスキューブートUSBキーを使用することもできます。例えばシステムがDebianまたはUbuntuの場合は、インストールUSBキーをレスキューモードで起動し、適切なmount
およびmv
およびumount
を実行します。
そのような間違いをより簡単に修復できるように、私は一般的にいくつかの組み込みコマンド(特にいくつかのcp
、rm
、mv
に似た組み込みコマンド)を含む静的シェルもインストールしますas sash
(Debian&Ubuntuでは packaged であり、ソースでは sash-3.8.tar.gz としても利用可能フォーム)とinit=/bin/sash
がGrubに渡されました。
PS:sash
は少しバグが多く、完全にPosix準拠ではありませんが、それでも非常に便利です。
最も安全な方法は、USB、CD、またはDVDでブートしたOS(Debian、Ubuntu、Suseなど)を使用して再起動することです。次に、問題のあるドライブをマウントし、名前を変更します。
/ usrまたは/ libが事実上存在しない状態で地雷原を起動するよりも安全です。
いくつかのテストのために/usr/bin
を/usr/bin_bkp
に名前変更したのと同じような問題に遭遇しましたが、名前を変更できませんでした(コマンドが標準でSudo
を見つけられなかったため) /usr/bin
のディレクトリ)から手動で(ファイルマネージャを使用して)/usr/bin_bkp
ディレクトリに移動し、右クリックでのほとんどの機能(名前の変更を含む)が無効になっています。
それから私は次のコマンドを試しました、そしてそれは問題を修正しました
$/usr/bin_bkp/Sudo mv /usr/bin_bkp/ /usr/bin/
私は現在のパスからSudoを呼び出して動作しましたが、すべて正常に戻りました。
OS:Xubuntu 14.04