Bash
如果未安裝使用者預設 shell 會怎樣?
我在一家大公司擔任系統管理員,必須維護幾個 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,您將無法登錄。