Bash

如果未安裝使用者預設 shell 會怎樣?

  • May 13, 2020

我在一家大公司擔任系統管理員,必須維護幾個 Windows 和 Linux (Ubuntu 16.04) 虛擬機。由於我想使用zsh而不是bash在 Linux VM 上使用,我必須更改我的預設 shell。

現在,我使用執行 AD 設置的 Windows 域帳戶登錄 Linux;這意味著我無法更改passwd文件或用於chsh更改我的預設 shell,所以我必須找到另一種方法。這種方式是在 AD 中使用該loginShell屬性強制執行 shell。

問題是,如果我登錄一個沒有安裝 zsh 的 Linux VM 會發生什麼,會發生什麼?它會回退到bash/ sh,會卡住還是其他什麼?

咱們試試吧!

伺服器上的 Shell 已更改:

[myserver ~]% getent passwd myuser
myuser:x:150:150:myuser:/home/myuser:/foo

讓我們登錄:

[myclient ~]% ssh myserver
Received disconnect from myserver: 2: Too many authentication failures for myuser

從伺服器上的 SSH 日誌:

Nov 22 09:30:27 myserver sshd[20719]: Accepted gssapi-with-mic for myuser from myclient port 33808 ssh2
Nov 22 09:30:27 myserver sshd[20719]: pam_unix(sshd:session): session opened for user myuser by (uid=0)
Nov 22 09:31:18 myserver sshd[20727]: Received disconnect from myclient: 11: disconnected by user
Nov 22 09:31:18 myserver sshd[20719]: pam_unix(sshd:session): session closed for user myuser
Nov 22 09:31:20 myserver sshd[20828]: User myuser not allowed because shell /foo does not exist
Nov 22 09:31:20 myserver sshd[20835]: input_userauth_request: invalid user myuser
Nov 22 09:31:20 myserver sshd[20835]: Disconnecting: Too many authentication failures for myuser

關鍵線:User myuser not allowed because shell /foo does not exist. 因此,如果您沒有設置有效的 shell,您將無法登錄。

引用自:https://unix.stackexchange.com/questions/325202