如果未安装用户默认 shell 会发生什么?

Daa*_*age 5 bash active-directory ssh ubuntu zsh

我在一家大公司担任系统管理员,必须维护多个 Windows 和 Linux (Ubuntu 16.04) 虚拟机。因为我想在 Linux VM 上使用zsh而不是使用bash,所以我必须更改我的默认 shell。

现在,我使用强制 AD 设置的 Windows 域帐户登录 Linux;这意味着我无法更改passwd文件或用于chsh更改我的默认 shell,所以我必须找到另一种方法。这种方式是在 AD 中使用loginShell属性强制执行 shell 。

问题是,如果我登录未安装 zsh 的 Linux VM 会发生什么?它是否回退到bash/ sh,是否卡住或其他什么?

jay*_*ren 6

咱们试试吧!

外壳在服务器上更改:

[myserver ~]% getent passwd myuser
myuser:x:150:150:myuser:/home/myuser:/foo
Run Code Online (Sandbox Code Playgroud)

让我们登录:

[myclient ~]% ssh myserver
Received disconnect from myserver: 2: Too many authentication failures for myuser
Run Code Online (Sandbox Code Playgroud)

从服务器上的 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
Run Code Online (Sandbox Code Playgroud)

关键行:User myuser not allowed because shell /foo does not exist。因此,如果您没有有效的 shell 集,则无法登录。