У меня есть пользователи Active Directory без локальных учетных записей, поэтому они не могут используйте chsh. Они могут войти на несколько разных типов серверов и в большинстве случаев /bin/bash
- это правильная оболочка, или, по крайней мере, для большинства пользователей предпочтительная оболочка доступна на большинстве серверов.
Однако есть пара исключительных случаев. Например, на большинстве компьютеров Mac через Homebrew установлены пользовательские / последние оболочки. Они должны, например, держать /bin/bash
является системной оболочкой (без обмана символических ссылок!), но у вас установлена более свежая версия Bash через Homebrew по адресу /usr/local/bin/bash
. Тот факт, что этого нет на большинстве серверов, по-видимому, не позволяет использовать свойство AD для изменения глобальной оболочки по умолчанию.
Можно ли указать оболочку, которая sshd
запускается для такой учетной записи на конкретной машине (вне зависимости от логина / интерактивного статуса)? Исключительные случаи, как правило, немногочисленны и пока происходят только на машинах для разработки, которые находятся под контролем пользователей, желающих выполнить настройку. В качестве альтернативы, существуют ли другие свойства AD, которые можно использовать для обеспечения большей детализации (например, укажите /usr/local/bin/bash
и имеют резервное поведение для другого свойства на серверах, на которых отсутствует этот путь).
Я предполагаю, что вы используете LDAP
Чтобы переопределить оболочку входа в систему для конкретной машины, вам необходимо добавить следующую директиву в конфигурацию LDAP машины (/etc/ldap.conf
в большинстве случаев)
nss_override_attribute_value loginShell <shell>
И перезапустите соответствующие службы AD, затем используя подходящий для вашего дистрибутива метод