
我安裝了魚魚(一個用戶友好的互動式命令列外殼)在Linux伺服器上,後來有人卸載了它但我不知道。我chsh -s /usr/local/bin/fish
不小心運行後,現在無法登入伺服器。顯示錯誤訊息“登入:沒有外殼:沒有這樣的檔案或目錄”,這顯然表明貝類不再存在。
伺服器只提供了CLI接口,那麼我連登入都無法登入的情況下如何更改登入shell呢?
答案1
如果您有權存取 root 帳戶,則可以使用 變更使用者的 shell chsh -u user -s $SHELL
。
如果您有權存取引導過程,則可以將其附加init=$SHELL
到單一使用者 shell,您可以在其中修復此問題,再次使用chsh -u user -s $SHELL
(某些使用帶有 initrd 映像的兩階段引導的系統可能需要您使用real_init
) 。您可能需要重新掛載包含/etc/passwd
讀寫(使用mount -o remount,rw /
或類似)的檔案系統。
否則,如果您可以su
從另一個用戶進入該用戶,請嘗試su user -c $SHELL
,或者如果您可以 ssh 進入該用戶,您可以嘗試類似ssh user@localhost $SHELL
。
您也可以啟動到 Live CD/USB,手動安裝/
和修復/etc/passwd
。
答案2
我有同樣的問題,這個解決方案對我有用:
- 在即時模式下使用 Live CD 啟動(我使用 debían 7.6)
- 在即時終端機中,執行以下命令以取得 root 存取權限:
passwd root
- 掛載崩潰發行版分割區的磁碟
- 轉到該磁碟並執行以下命令:
cat etc/shells
- 刪除
nano etc/passwd
魚引用並輸入第 4 點的有效控制台名稱 - 重新啟動並享受。
答案3
當嘗試登入時,我收到以下訊息: 無法執行 /sbin/nologin: 沒有這樣的檔案或目錄
這就是我所做的,它對我有用。
- 我使用另一個具有超級使用者權限的帳戶登入系統
- 輸入以下命令:
sudo chsh -u 用戶 -s $SHELL
其中 user 是有問題的帳號名稱
- 退出系統
- 使用有問題的帳號登入
答案4
我在 Elementary OS Loki 也遇到了同樣的問題。為了解決該問題,我執行了以下操作
- 首先我刪除與 zsh 相關的所有內容sudo apt-get 刪除 zsh && apt-get 自動刪除
- 之後我編輯了/etc/密碼檔案並發現 root 使用者的 shell 未定義,所以我編輯了 shell /bin/bash 這一切都幫助我解決了問題。