Nevypínejte počítač.
Máte ještě běžící shell? Je to bash? Pokud ano, jste v pořádku. (Ale už to nedělejte.)
Spustit:
sudo cp /proc/$$/exe /bin/bash
Voila, všechno je v pořádku.
Protože někdo v komentářích pochybuje, že to funguje:
[[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
je shell, pravděpodobně váš systémový shell, takže se nyní dějí divné věci, zatímco části shellu jsou stále v paměti. Jakmile se odhlásíte nebo restartujete, budete mít hlubší potíže.
První věcí by tedy měla být změna vaší skořápky na něco bezpečného. Podívejte se, jaké shelly máte nainstalované
cat /etc/shells
Potom změňte svůj shell na jeden z dalších zde uvedených shellů, například
chsh -s /bin/dash
Aktualizujte, protože jste již restartovali:
Máte štěstí, že v dnešní době proces spouštění nespoléhá na bash
, takže váš systém nabootuje, jen nemůžete získat příkazový řádek. Ale můžete spustit editor a upravit /etc/passwd
a změňte shell v root
řádek od /bin/bash
až /bin/dash
. Odhlaste se a znovu se přihlaste. Jednoduše v tomto souboru neprovádějte žádné další změny, jinak si můžete úplně pokazit systém.
Potom zkuste znovu nainstalovat bash
s
apt-get --reinstall install bash
Pokud vše proběhlo úspěšně, můžete chsh
zpět na bash
.
Konečně:Myslím, že kali je vysoce specializovaná distribuce, pravděpodobně není vhodná pro lidi, kteří omylem přepíší svůj shell. Vzhledem k tomu, že tato věta byla nazvána hrubá a drsná, měl bych dodat, že jsem ji napsal z vlastní zkušenosti. Když jsem byl mladší, zničil jsem si svůj systém, protože mi nikdo neřekl, abych se jako root nepletl.
Pokud se můžete přihlásit, ale nemůžete otevřít terminál nebo jinak získat přístup k shellu, ale můžete přistupovat k souborům prostřednictvím GUI, přejděte na /bin
,hledejte soubory, jejichž názvy končí sh
(ale ne .sh
)a spusťte jeden (poklepáním nebo kliknutím pravým tlačítkem). Hledejte zejména následující:
sh
dash
ash
ksh
(neboksh
následuje číslo; např.ksh93
)zsh
yash
nebo jako poslední možnost
tcsh
nebocsh
Pokud se vám podaří spustit shell, zkuste Philipposovu odpověď.
Dalším přístupem je zavedení do režimu pro jednoho uživatele podle těchto pokynů, ale zadejte init=/bin/sh
(nebo jeden z jiných shellů) místo init=/bin/bash
.