特定机器上 SSH 登录使用不同的 shell

特定机器上 SSH 登录使用不同的 shell

我有一些没有本地帐户的 Active Directory 用户,因此他们无法使用 chsh。他们可以登录到多种不同类型的服务器,并且大多数时候/bin/bash都是正确的 shell,或者至少对于大多数用户来说,他们首选的 shell 在大多数服务器上都可用。

但是,也存在一些例外情况。例如,大多数 Mac 都通过 Homebrew 安装了自定义/最新 shell。它们应该保持/bin/bash系统 shell(没有符号链接作弊!),但通过 Homebrew 安装了较新的 Bash /usr/local/bin/bash。事实上,大多数服务器上不存在这个,这似乎阻止了使用 AD 属性来更改全局默认 shell。

是否可以sshd在特定机器上指定为此类帐户启动的 shell(无论登录/交互状态如何)?例外情况往往很少,到目前为止只发生在需要定制的用户控制的开发机器上。或者,是否有其他 AD 属性可用于提供更精细的粒度(例如,在/usr/local/bin/bash缺少此路径的服务器上指定并具有回退行为到另一个属性)。

答案1

我假设你正在使用 LDAP

要覆盖特定机器的登录 shell,您需要将以下指令添加到机器的 LDAP 配置中(/etc/ldap.conf大多数情况下)

nss_override_attribute_value loginShell <shell>

然后重新启动相应的 AD 服务然后使用适合您的发行版的方法

相关内容