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:
[example@unixlinux.online ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[example@unixlinux.online ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[example@unixlinux.online ~]$ echo $0
-bash
[example@unixlinux.online ~]$ sudo rm /bin/bash
[example@unixlinux.online ~]$ bash
-bash: /bin/bash: No such file or directory
[example@unixlinux.online ~]$ sudo su -
su: /bin/bash: No such file or directory
[example@unixlinux.online ~]$ sudo cp /proc/$$/exe /bin/bash
[example@unixlinux.online ~]$ bash
[example@unixlinux.online ~]$ exit
[example@unixlinux.online ~]$ sudo su -
[example@unixlinux.online ~]# logout
[example@unixlinux.online ~]$
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í:
shdashashksh(nebokshnásleduje číslo; např.ksh93)zshyash
nebo jako poslední možnost
tcshnebocsh
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 .