我有一个客户有一个安装脚本,需要/bin/tcsh
在其 Active Directory 域加入的 RHEL7 虚拟机上作为 shell 运行。此安装脚本将使用名为 的服务帐户运行serviceaccount
。现在,该帐户因其所属的组而被授予权限Admins
。
最终用户登录虚拟机,sudo su serviceaccount
然后运行 shell。
我们已将serviceaccount
的属性修改loginShell
为/bin/tcsh
。
现在,Unix 管理团队将serviceaccount
的配置文件设置为/bin/tcsh
,并且可以使用用户的环境设置来验证它。不知何故,安装脚本正在查找/bin/bash
,它看起来完全是随机的,但超过 95% 的时间它都会错误地拉取。
除了loginShell
.
我还验证了它在环境中的每个域控制器中都设置正确。
getent passwd serviceaccount
serviceaccount:*:123456789:123456789:serviceaccount:/home/serviceaccount:/bin/bash
(作为另一项测试,我们建立了一个新的虚拟机,该帐户从未登录过,但getent
仍然显示/bin/bash
。)
有任何想法吗?
答案1
非常确定您会通过 authconfig 设置的 sssd 使用 AD 身份验证。在 /etc/sssd/sssd.conf 中,将为 AD 域/领域设置默认 shell。这就是 /bin/bash 的来源。至于为每个帐户设置 shell 吗?不知道如何覆盖 sssd 默认值。