GNU/Linux >> Linux の 問題 >  >> Linux

/bin/bash の内容と、誤って上書きしてしまった場合の対処法

マシンをシャットダウンしないでください。

まだ実行中のシェルがありますか?バッシュですか?もしそうなら、あなたは大丈夫です。 (ただし、これを繰り返さないでください。)

実行:

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

ほら、すべて順調です。

コメントの誰かがこれが機能することを疑っているので:

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

bash シェル、おそらくシステムシェルであるため、シェルの一部がまだメモリにある間に奇妙なことが起こります。ログアウトまたは再起動すると、さらに深刻な問題が発生します。

したがって、最初にシェルを安全なものに変更する必要があります。インストールしたシェルを見る

cat /etc/shells

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

chsh -s /bin/dash

再起動したので更新:

幸運なことに、最近では起動プロセスが bash に依存していません。 、システムが起動するので、コマンドラインを取得できません。ただし、エディタを起動して /etc/passwd を編集することはできます root のシェルを変更します /bin/bash の行 /bin/dash まで .ログアウトして、再度ログインします。そのファイルに他の変更を加えないでください。そうしないと、システムが完全に台無しになる可能性があります。

bash を再インストールしてみてください と

apt-get --reinstall install bash

すべてが成功したら chsh できます bash に戻る .

最後に:kali は高度に専門化されたディストリビューションであり、誤ってシェルを上書きしてしまう人にはおそらく適していないと思います。 この文は失礼で厳しいと呼ばれていたので、私は自分の経験から書いたことを付け加えておきます.私が若い頃、ルートとしていじるのを避けるように誰も私に言わなかったので、私はシステムを台無しにしました.


ログインはできるが、ターミナルを開いたりシェルにアクセスしたりできないが、GUI からファイルにアクセスできる場合は、/bin に進みます。 、名前が sh で終わるファイルを探します (ただし、.sh ではありません) ) 1 つを実行します (ダブルクリックまたは右クリック)。特に、以下を探してください:

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

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

  • tcsh または
  • csh

シェルを実行できる場合は、Philippos の回答を試してください。

もう 1 つの方法は、次の手順に従ってシングル ユーザー モードで起動することですが、init=/bin/sh を指定します。 (または他のシェルのいずれか) init=/bin/bash の代わりに .


Linux
  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Bash =〜正規表現とHttps://regex101.com/?

  3. / bin/bashではなく/bin/ shを指すシバンを使用する理由はありますか?

  1. / bin/shが/bin/bashではなく/bin/ dashを指すのはなぜですか?

  2. nologin ユーザーのシェルとしての /bin/false と /sbin/nologin の違い

  3. バイナリを /bin、/sbin、/usr/bin、および /usr/sbin にインストールし、 --prefix および DESTDIR と対話します

  1. #!/usr/bin/env bash と #!/usr/bin/bash の違いは何ですか?

  2. /、/boot、/home、swap に割り当てるサイズ

  3. /usr/sbin、/usr/local/sbin、/usr/local/bin の意味は何ですか?