我有一个全新的 CentOS 最小安装,并安装了 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 用户都在身份验证时注销!
这取决于您使用的后端类型。顺序无关紧要,但只有在您使用模板驱动的后端(如 idmap_rid)时才会应用您的模板。
使用
testparm
我发现这是由于试图将 Winbind 分隔符指定为\\
- 以试图让它执行 Windows 使用的标准反斜杠。由于
smb.conf
, that 的解析被解释为续行,因此分隔符之后的行被视为该指令的结尾,因此被忽略!当首先放置模板 homedir 时,Samba 忽略它,而当首先放置模板 shell 时,Samba 忽略了该命令。由于单个反斜杠是 Winbind 的默认分隔符,因此我删除了分隔符行,两个模板指令现在都可以使用。