/bin/bashの内容は何であり、誤って上書きした場合はどうすればよいですか?

/bin/bashの内容は何であり、誤って上書きした場合はどうすればよいですか?

誤って/binフォルダに入れようとしたばかばかしいスクリプトで/bin/bashファイルを上書きしました。

このファイルの内容をどのように検索しますか? Webでコンテンツを見つけて再コピーする方法はありますか?端末で「シンボルリンクが多すぎます」というエラーが発生した場合、ここで選択できるものは何ですか?

私はまだこの種の仕事に初めて触れ、私が受けることができるすべての助けに感謝します。

編集:Kali 2.2 Rollingを使用していることに言及するのを忘れました。 Kali 2.2 RollingはほぼDebianですが、いくつかの追加機能があります。

編集2:数日前まで私の間違いを気づかなかったので、コンピュータも再起動しました。これはこれを非常に困難にします。

答え1

コンピュータをシャットダウンしないでください。

まだ実行中のシェルはありますか?バッシュですか?だとしたら大丈夫です。 (しかし、再びそうしないでください。)

ランニング:

sudo cp /proc/$$/exe /bin/bash

見て、すべてが大丈夫です。


コメントの誰かがこれがうまくいくかどうか疑ったので:

[vagrant@localhost ~]$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[vagrant@localhost ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[vagrant@localhost ~]$ echo $0
-bash
[vagrant@localhost ~]$ sudo rm /bin/bash
[vagrant@localhost ~]$ bash
-bash: /bin/bash: No such file or directory
[vagrant@localhost ~]$ sudo su -
su: /bin/bash: No such file or directory
[vagrant@localhost ~]$ sudo cp /proc/$$/exe /bin/bash
[vagrant@localhost ~]$ bash
[vagrant@localhost ~]$ exit
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# logout
[vagrant@localhost ~]$ 

答え2

bashはシェル、おそらくシステムシェルなので、シェルの一部がまだメモリにある間に奇妙なことが起こっています。ログアウトまたは再起動すると、より大きな問題に直面します。

したがって、最初にすべきことは、シェルをセキュアシェルに変更することです。どのシェルがインストールされているか確認してください。

cat /etc/shells

次に、シェルをそこにリストされている他のシェルのいずれかに変更します。

chsh -s /bin/dash

再起動後のアップデート:

幸いなことに、ブートプロセスはそれに依存しないため、システムの起動時にコマンドラインbashにアクセスできなくなります。ただし、エディタを実行して/etc/passwdfrom to lineでシェルを編集および変更できます。ログアウトしてもう一度ログインしてください。このファイルに他の変更を適用しないでください。そうしないと、システムが完全に壊れる可能性があります。root/bin/bash/bin/dash

bashその後、再インストールしてみてください。

apt-get --reinstall install bash

すべてが成功すればchsh戻ることができますbash

最後に、kaliは高度に専門化されたディストリビューションなので、誤ってシェルを上書きした人には適していないと思います。この引用は失礼で過酷であることが知られているので、この記事は私の経験に基づいて書かれていることを付け加えなければなりません。幼い頃には root でいたずらしてはいけないと言った人がいなかったので、文字通りシステムを破壊しました。

答え3

ログインできますが、端末を開くことができないか、シェルにアクセスできないがGUIを介してファイルにアクセスできる場合に移動し、名前で終わる(しかし)ファイルを見つけて/bin実行します(ダブルクリックまたは右クリック)。具体的には、以下を見つけてください。sh.sh

  • sh
  • dash
  • ash
  • ksh (またはksh後に数字が続きます。例  ksh93:)
  • zsh
  • yash

または最後の手段として、

  • tcsh または
  • csh

シェルを実行できる場合は、お試しください。フィリップスの答え

別の方法は、次のようにシングルユーザーモードで起動することです。このガイドラインinit=/bin/shただし、代わりに(または他のシェルの1つ)を指定してくださいinit=/bin/bash

関連情報