Linux
/bin/bash 的內容是什麼,不小心覆蓋了怎麼辦
我不小心用我打算放在 /bin 文件夾中的啞腳本覆蓋了 /bin/bash 文件。
如何取回該文件的內容?有沒有辦法可以在網上找到內容,然後將它們複製回去?考慮到終端在談論“太多符號連結”時出現錯誤,我有什麼選擇?
我仍然是這種事情的新手,我很感激我能得到的所有幫助。
編輯:我忘了提到我正在使用 Kali 2.2 Rolling,它幾乎是帶有一些附加功能的 debian。
編輯2:我也重新啟動了機器,因為直到幾天前我才意識到我的錯誤。這使得這變得相當困難。
bash
是一個外殼,可能是您的系統外殼,所以現在發生了奇怪的事情,而外殼的一部分仍在記憶體中。註銷或重新啟動後,您將陷入更深的麻煩。因此,首先應該將您的外殼更改為安全的。查看您安裝了哪些 shell
cat /etc/shells
然後將您的外殼更改為那裡列出的其他外殼之一,例如
chsh -s /bin/dash
更新,因為您已經重新啟動:
你很幸運,現在啟動過程不依賴
bash
,所以你的系統啟動時,你只是無法獲得命令行。但是您可以啟動一個編輯器來編輯/etc/passwd
和更改該root
行中的 shell 從/bin/bash
到/bin/dash
。註銷並重新登錄。只是不要對該文件進行任何其他更改,否則您可能會完全弄亂您的系統。然後嘗試重新
bash
安裝apt-get --reinstall install bash
如果一切順利,您可以
chsh
返回bash
.最後:我認為,kali 是一個高度專業化的發行版,可能不適合那些不小心覆蓋了他們的 shell 的人。由於這句話被稱為粗魯和苛刻,我應該補充一下,我是根據自己的經驗寫的。當我年輕的時候,我確實毀了我的系統,因為沒有人告訴我要避免以 root 身份亂搞。
不要關閉你的機器。
你還有一個正在執行的shell嗎?是重擊嗎?如果是這樣,你很好。(但不要再這樣做了。)
跑:
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 ~]$