当用户存储在 AD 中时,Windows 机器可以使用 Kerberos 对 Samba 进行身份验证吗?

当用户存储在 AD 中时,Windows 机器可以使用 Kerberos 对 Samba 进行身份验证吗?

我知道标题可能不太清楚,但我实在想不出更好的了。

我们有两个域,我们称它们为example.com和。前者由 Active Directory 服务器管理,并容纳一些服务器以及所有 Windows 客户端。后者容纳许多 Unix 机器(主要是 Solaris)。从领域到subnet.example.com存在单向信任。SUBNET.EXAMPLE.COMEXAMPLE.COM

通过此设置,常用的东西都可以正常工作,例如 ssh 登录、NFSv4 等。

现在,我想要做的是在 Unix 机器上运行 Samba 服务器subnet.example.com。Windows 用户应该能够访问这些服务器上的文件。

我在 Samba 中设置了 Kerberos 身份验证,它可以在任何 Linux 客户端上完美运行。smbclient当我拥有 Kerberos TGT 时,我可以通过它访问计算机,如果我将其删除,它就会停止工作。用户映射完全按预期工作。这些机器cifs/hostname在 MIT Kerberos 服务器中有条目。

但是,Windows 客户端无法执行相同的操作。查看 Samba 日志时,我可以看到 Samba 服务器尝试与 AD 服务器通信,但由于 Samba 服务器尚未加入 AD 域,因此不允许这样做。

那么,我听到你问:“你为什么不加入 AD 域呢?”答案是我无法做到这一点,因为子网上的系统是测试系统,通常每天要安装和重新安装多次,并且我们不希望每次安装或离线测试系统时都有 AD 管理员对此进行配置(并删除它们)。

此外,对于 Linux 客户端来说一切都运行正常,这让我相信应该可以以某种方式让它运行起来。

所以,我的问题是:这可能吗?Windows 中是否存在某些限制,阻止它们成为正常 Kerberos 域中的客户端?如果是这样,解决此问题的最佳方法是什么?

答案1

我解决了这个问题。问题是 Windows 客户端不知道属于subnet.example.com不同的域。解决方案是将此情况通知客户端。可以使用以下两个命令来完成此操作,我相信这类似于在krb5.confUnix 系统中添加域信息:

ksetup /addkdc SUBNET.EXAMPLE.COM hostname.of.kerberos.server
ksetup /addhosttorealmmap .subnet.example.com SUBNET.EXAMPLE.COM

完成此操作后,客户端身份验证按预期工作。

相关内容