配錯了默認環境並不可怕,大不了再配回來就好了嘛。
顯然,說這樣話的人是沒有故事的。
總之,如果你發現你的 vps 有一天突然無法登錄了,沒有報錯內容是沒有權限,但證書確定是正確的——那你就可能是在上次退出前配錯了 shell。這時候即使你用 console 去登錄,也會發現登錄後一閃而過立即回到了登錄界面——完蛋了,你心想,剛配好的環境又得重來一遍。
使用 CHSH 切換 默認shell是一鍵很危險的事情,最好不要輸錯了,不然你就 gg。
這個時候,你可以嘗試在 console 裡發送 control + ALT + delete 來重啟,在一閃而過的 蠐螬 啟動界面,按方向鍵阻止自動啟動(如果錯過了,就再來一遍吧),把高亮移動到“高級選項”上,系統默認是英文,但這並不影響你選擇,理論上都是第二個。
在高級選項裡也選中 第二個 “恢復模式”,然後按 e 來編輯參數:
將上圖參數里的 RO 復甦 nomodeset 改為 RW 單 init=/箱子/慶典
然後按 ctrl + x 來執行,這樣你就進入到了 Linux 的單用戶模式,在這裡你不需要輸入root密碼即可獲得root權限——當然,似乎在這裡你的root密碼也是失效的,總之,現在你可以改回默認的 shell 了——但不是用 chsh,這東西需要密碼授權,然而你是永遠不能輸入正確密碼的。
好在 Linux 把所有的配置都寫在了配置文件裡,我們直接編輯 /等等/passwd文件 ,裡面第一行就是 root 的信息:
1 2 3 4 5 6 7 |
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync ... |
不論你改成了什麼,按照上面的代碼,把 root 的 shell 改為 /箱子/慶典 即可恢復默認,如果你和我一樣用 zsh,那就寫 /箱子/zsh的 ,保存後重啟即可恢復正常。
“我覺得……我還可以,搶救一下? ”
本文由 落格博客 原創撰寫:落格博客 » 用 chsh -s 配錯了 shell 該如何挽救?
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/3003.html
改 init 之後並不是單用戶模式加的 single 也沒有用(因為單用戶模式是 init 系統的概念,然而它被你換掉了)。
chsh 錯 shell 就 root 登錄過去改唄。我一般不使用 root 做常規操作的,也不會去改 root 的默認 shell,不然遇到問題(改錯或者卸載或者配錯 shell)就太坑了(服務器哪能輕易重啟呢,尤其是個人和小團體使用的,沒有備用服務)。
尷尬的就是如果你手賤把 root 的 shell 改成了一個不存在的路徑,然後這台機器上還沒有其他可登錄賬戶………………
這時候只需要重啟一下不用重裝……已經是很幸運的事情了。