
我喜歡魚。我有一個很好的 Ubuntu 8.04 伺服器,運行一些服務。因此,我像過去一樣編輯了 /etc/passwd 文件,將預設 shell 從 bash 更改為 Fish。是的,我打錯了(順便說一句:我知道 chsh,我就是那麼愚蠢和過於自信)。請別笑。
正如所料,現在我無法登入。是否可以在不重新啟動伺服器的情況下登入?我知道我可以在安全模式下重新啟動伺服器並解決混亂問題,但我想避免它。
哦,是的,我在該伺服器上沒有其他具有 sudo 權限的用戶。別再笑了。
順便說一句,我使用 ssh 搞得一團糟,但我可以輕鬆地物理訪問伺服器,距離伺服器只有幾個房間。
答案1
很不幸的是,不行;你把自己鎖在門外了。如果缺少 shell,SSH 將不允許您登入。以下是該嘗試的樣子/var/log/auth.log
:
Dec 23 15:04:59 ubuntu sshd[5585]: User kees not allowed because shell /bin/fish does not exist
控制台上的 TTY 登入將始終嘗試啟動您配置的 shell。如果沒有其他具有sudo
權限的用戶,您將需要啟動到單一用戶模式來修復它。 :(
答案2
如果您設定了 root 密碼,則可以在電腦本身上以 root 身分登入(在 X 中或透過按 alt-F1 在虛擬控制台上),或以非 sudo 使用者身分遠端登錄,然後使用下列指令切換到 rootsu
在終端中。
當然,Ubuntu 預設不允許您以 root 身分登錄,因此假設您先前已對此進行了變更。
答案3
如果您想將某些設定檔恢復到以前的狀態,您可以隨時嘗試編輯它們,透過使用某些 Ubuntu CD 的 Live 版本啟動您的伺服器,掛載 /etc 檔案所在的實際分割區並使用六.
您也可以編輯檔案 /etc/sudoers,以便為更多使用者提供成為 root 的權限。