Что произойдет, если оболочка по умолчанию для пользователей не установлена?

Я работаю системным администратором в крупной компании и должен поддерживать несколько окон и Linux (Ubuntu 16.04). Поскольку я хочу использовать zsh вместо bash на виртуальных машинах Linux, я должен изменить свою оболочку по умолчанию.

Теперь я вхожу в систему под Linux с учетной записью домена Windows, которая активирует настройки AD; это означает, что я не могу изменить файл passwd или использовать chsh чтобы изменить свою оболочку по умолчанию, поэтому мне пришлось найти другой способ. Этот способ состоял в том, чтобы принудительно использовать оболочку в AD с атрибутом loginShell .

Вопрос в том, что произойдет, если я войду на виртуальную машину Linux, у которой нет zsh, что происходит? Оказывает ли это отказ на 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 

Key line: User myuser not allowed because shell /foo does not exist . Поэтому вы не можете войти в систему, если у вас нет допустимого набора оболочки.

Нет возврата. Появится сообщение об ошибке, такое как …

 Cannot execute /does/not/exist: No such file or directory. 

Вы можете добавить вызов zsh без изменения AD.

 echo 'exec zsh' >> ~/.bashrc 

Затем, каждый раз, когда вы входите в систему с bash , вы запускаете zsh автоматически.