GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was sind die Inhalte von /bin/bash und was mache ich, wenn ich sie versehentlich überschrieben habe?

Schalten Sie Ihren Computer nicht aus.

Hast du noch eine Laufschale? Ist es Bash? Wenn ja, bist du in Ordnung. (Aber mach das nicht noch einmal.)

Ausführen:

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

Voila, alles ist gut.

Da jemand in den Kommentaren bezweifelt, dass das funktioniert:

[[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 ist eine Shell, wahrscheinlich Ihre System-Shell, also passieren jetzt seltsame Dinge, während Teile der Shell noch im Speicher sind. Sobald Sie sich abmelden oder neu starten, stecken Sie in größeren Schwierigkeiten.

Das erste, was Sie also tun sollten, ist, Ihre Shell auf etwas Sicheres umzustellen. Sehen Sie, welche Shells Sie installiert haben

cat /etc/shells

Ändern Sie dann Ihre Shell zu einer der anderen dort aufgeführten Shells, zum Beispiel

chsh -s /bin/dash

Aktualisieren, weil Sie bereits neu gestartet haben:

Sie haben Glück, dass der Bootvorgang heutzutage nicht mehr auf bash angewiesen ist , also startet Ihr System, Sie können einfach keine Befehlszeile erhalten. Aber Sie können einen Editor starten, um /etc/passwd zu bearbeiten und ändern Sie die Shell in root Zeile ab /bin/bash bis /bin/dash . Abmelden und erneut anmelden. Nehmen Sie einfach keine weiteren Änderungen in dieser Datei vor, oder Sie können Ihr System komplett durcheinanderbringen.

Versuchen Sie dann, bash neu zu installieren mit

apt-get --reinstall install bash

Wenn alles geklappt hat, können Sie chsh zurück zu bash .

Abschließend:Ich denke, kali ist eine hochspezialisierte Distribution, wahrscheinlich nicht geeignet für Leute, die versehentlich ihre Shell überschreiben. Da dieser Satz als unhöflich und hart bezeichnet wurde, sollte ich hinzufügen, dass ich ihn aus meiner eigenen Erfahrung heraus geschrieben habe. Als ich jünger war, habe ich mein System ruiniert, weil mir niemand gesagt hat, ich solle es vermeiden, als Root herumzuspielen.


Wenn Sie sich anmelden, aber kein Terminal öffnen oder anderweitig auf eine Shell zugreifen können, aber über die GUI auf Dateien zugreifen können, gehen Sie zu /bin , suchen Sie nach Dateien, deren Namen mit sh enden (aber nicht .sh ) und führen Sie eine aus (durch Doppelklicken oder Rechtsklicken). Suchen Sie insbesondere nach Folgendem:

  • sh
  • dash
  • ash
  • ksh (oder ksh gefolgt von einer Zahl; B. ksh93 )
  • zsh
  • yash

oder, als letztes Mittel,

  • tcsh oder
  • csh

Wenn Sie eine Shell zum Laufen bringen können, versuchen Sie es mit der Antwort von Philippos.

Ein anderer Ansatz besteht darin, in den Einzelbenutzermodus zu booten, indem Sie diesen Anweisungen folgen, aber init=/bin/sh angeben (oder eine der anderen Shells) anstelle von init=/bin/bash .


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Was ist der Unterschied zwischen /sbin/nologin und /bin/false?

  3. Warum zeigt /bin/sh auf /bin/dash und nicht auf /bin/bash?

  4. Was ist der Unterschied zwischen #!/usr/bin/env bash und #!/usr/bin/bash?

  5. Was bedeuten /usr/sbin, /usr/local/sbin und /usr/local/bin?

Was ist der Unterschied zwischen /bin/false und /sbin/nologin als Shell des nologin-Benutzers?

Was sind /dev/zero- und /dev/null-Dateien in Linux

Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Welche Größen sollten Sie /, /boot, /home und swap zuweisen

Was ist der Unterschied zwischen /tmp und /run?