我有没有本地帐户的Active Directory用户,所以他们不能使用chsh 。 他们可以login到多种不同types的服务器,大部分时间/bin/bash是正确的shell,或者至less对于大多数用户来说,他们首选的shell在大多数服务器上都可用。
但是,有几个例外情况。 例如,大多数Mac都通过Homebrew安装了自定义/最近的shell。 他们应该例如保持/bin/bash作为系统shell(没有符号链接作弊!),但通过Homebrew在/usr/local/bin/bash安装了更新的Bash。 这在大多数服务器上不存在的事实似乎阻止了使用AD属性来更改全局默认shell。
是否可以指定sshd为特定计算机上的此类帐户启动的shell(无论login/交互状态如何)? 例外情况往往数量less,迄今为止只发生在希望定制的用户的控制之内的开发机器上。 或者,还有其他AD属性可用于提供更多的粒度(例如,指定/usr/local/bin/bash并且对缺less此path的服务器上的另一个属性具有回退行为)。
我假设你正在使用LDAP
要覆盖特定机器的loginshell,您需要将以下指令添加到机器的LDAPconfiguration(在大多数情况下为/etc/ldap.conf )
nss_override_attribute_value loginShell <shell>
然后重新启动相应的AD服务,然后使用适合您的发行版方法