在我的基于 Linux 的基础设施中,我运行 MIT Kerberos 和 LDAP 进行身份验证。对于极少数 Windows VM 客户端,我使用 Samba 独立文件服务器。它的帐户也存储在 LDAP 中。该基础设施已有数十年历史,是 NT 域的剩余部分。
我现在有了第二个网站。我克隆了我的文件服务器并设置了一个新的 Samba 服务器。我遵循这个帖子或者这个帖子过去,我的独立服务器都具有相同的 SID,否则服务器将无法对用户进行身份验证。
因此,我将工作组的 SID 复制到新服务器创建的新 sambaDomainName 条目中。就像我几年前对旧服务器所做的那样。
虽然我仍然可以挂载旧服务器的共享,但尝试从新服务器挂载共享时,ERROR_INVALID_SID
Win10 会出现问题。同样,CIFS 挂载也会出现问题
[247902.830949] CIFS: Attempting to mount //new_server/public
[247902.994871] CIFS: Status code returned 0xc0000078 STATUS_INVALID_SID
[247902.994889] CIFS: VFS: \\new_server Send error in SessSetup = -5
[247902.994925] CIFS: VFS: cifs_mount failed w/return code = -5
知道为什么 SID 无效吗?我看不出它与其他 SID 有什么区别;既不是 by net getlocalsid
,也不是 byldapsearch
或ApacheDirectoryStudio
。
我知道这是一个不靠谱的解决方案。迁移到 AD 不是选项。由于我听说微软可能很快会放弃 NT 域,所以我不想再设置另一个 PDC / BDC 系统。实际上,复制 SID 解决方案是在 samba 存在已知错误时的一种解决方法net join
。
是否有其他方法可以让多个 samba 服务器使用相同的 ldapsam?
答案1
为什么不能将 Samba 作为 AD DC 运行?我之所以问这个问题,是因为这很可能就是您的答案。微软大约 15 年前就放弃了 NT 域。Samba 正在努力删除 NT4 样式的域,因此我不建议设置新的域。
答案2
在与 Samba 无关的内核崩溃后重新启动文件服务器后,问题消失了。我现在可以从 Win10 或通过 Linux CIFS 挂载所有共享。我甚至可以同时从两台服务器挂载共享,尽管它们使用相同的 SID!
我不知道我是否在中间做了任何改变。但也许service nmbd restart
并service smbd restart
不足以使某些改变有效。
在我的特殊环境中,我仍然认为这种黑客攻击是一种明智的解决方案。如果您必须支持 Windows 客户端以供一般使用,或者 Samba 服务器在您的安全概念中发挥任何作用,请使用 AD。
感谢 Rowland 在这里与我联系。