從 bash 切換到 zsh 後如何獲得 root 權限?
很奇怪,從bash切換到zsh後,無法訪問root。
在我以普通使用者(使用者名是)登錄後,我通常使用 ‘su’ 以 root 身份登錄,並且
normalusername
權限較少。它總是很好。但是在將 root shell 從 bash 切換到 zsh 之後,當我嘗試通過 su 登錄時,我得到了:normalusername@(none):~$ su Password: (enter the correct password) Cannot execute zsh: No such file or directory
當我從我的 Mac 直接通過 ssh 訪問 root 時,我得到:
localhost:~ myname$ ssh -lroot 106.186.120.20 root@106.186.120.20's password: (enter the correct/incorrect password) Permission denied, please try again.
無論我是否輸入了正確的密碼,它都會一次又一次地出現。
所以我故意用普通使用者的“su”輸入了錯誤的密碼,我得到了:
normalusername@(none):~$ su Password: (entered a wrong password and pressed enter) (pressed enter) su: Authentication failure
輸入錯誤密碼後我什麼也沒看到,我輸入
enter
了兩次,然後得到了su: Authentication failure
結果。我試了很多次,結論是:
- 如果我輸入正確的密碼,它會告訴我“無法執行 zsh:沒有這樣的文件或目錄”
- 如果我輸入了錯誤的密碼,它不會顯示任何東西,直到我點擊
enter
2-6 次。這似乎表明我不只是忘記了“正確的密碼”。但是我怎麼能訪問root呢?
進入的
/etc/passwd
是root:x:0:0:root:/root:zsh
試試:
cd /usr/bin; su
。由於您沒有給出 zsh 的絕對路徑。su
正在檢查PWD
. 更改為zsh
存在的目錄將在某些系統上工作。一個例子:% su Password: su: zsh: No such file or directory % cd /usr/local/bin % su Password: # print $OSTYPE freebsd10.0 #
您的輸入
/etc/passwd
是root:x:0:0:root:/root:zsh
這是一個無效條目:shell 必須是執行檔的完整路徑,登錄程序不執行 $PATH 查找。
您將無法通過正常方式登錄到 root 帳戶。您可以使用 sudo 呼叫命令,例如
sudo vipw
,如果您的帳戶具有 sudo 權限。這是繞過目標帳戶中的登錄 shell 設置的唯一常用方法。如果您不是 sudoer,您可能已經將自己鎖定在 root 帳戶之外。您需要控制台訪問權限才能修復系統。以單使用者模式啟動(請參閱如何以系統管理員 (root) 身份執行命令)並編輯
/etc/passwd
以包含root:x:0:0:root:/root:/bin/zsh
(在您的系統上使用正確的 zsh 路徑)。
一些管理員使用 UID 0 設置了一個toor 帳戶,但使用了不同的 shell(通常是靜態連結的二進製文件,例如sash,以允許 root 登錄,即使在這樣的錯誤配置的情況下(最常見的錯誤配置是損壞的共享庫)在普通外殼中)。
為避免將來出現此類問題,請使用該
chsh
命令更改使用者的 shell,而不是/etc/passwd
直接編輯。如果您必須編輯/etc/passwd
或其他一些涉及獲得 root 訪問權限的文件,請在終端中保持 root shell 打開,並且在您確認您仍然可以以 root 身份登錄之前不要關閉它。