为什么 Samba 忽略我的模板 shell = /bin/bash 设置?

为什么 Samba 忽略我的模板 shell = /bin/bash 设置?

我有一个全新安装的 CentOS minimal,并且已按如下方式安装 Samba:

yum install krb5-workstation samba

首先,我是否已获得成为域成员所需的所有软件包?上述命令还会安装依赖项:

libtalloc libtdb samba-common samba-winbind samba-winbind-clients

在我的 smb.conf 中,有以下几行:

template shell = /bin/bash
template homedir = /home/%D/%U

我已加入到域中:

net ads join -U <admin>

我现在可以使用getent passwd和查看 AD 用户以及本地用户,但所有 AD 帐户的 shell 均列为/bin/false。不过,它们的主目录确实正确为/home/<DOMAIN>/<username>

什么原因导致了这种行为?目前所有 AD 用户在身份验证后都会被注销!

答案1

这取决于您使用的后端类型。顺序无关紧要,但只有当您使用模板驱动的后端(如 idmap_rid)时,您的模板才会被应用。

答案2

使用后testparm我发现这是由于尝试将 Winbind 分隔符指定为\\- 以尝试让它执行 Windows 使用的标准反斜杠。

由于 的解析smb.conf,它被解释为行延续,因此分隔符后的行被视为该指令的结尾,因此被忽略!当首先放置模板 homedir 时,Samba 会忽略它,而当首先放置模板 shell 时,Samba 则会忽略该命令。

由于单个反斜杠是 Winbind 的默认分隔符,因此我删除了分隔符行,现在两个模板指令都可以正常工作。

相关内容