尝试了好几个小时才得到这个(甚至没有必要,但我不知何故迷失在“区域”中并决心这样做)在没有关于整个 AD 基础设施的任何线索的情况下工作,现在我已经没有主意了。
我有一台工作用的 win10 机器,它已注册到我们的 Active Directory 域,因此已经注册。但是,由于我更喜欢在 Linux 机器上工作,所以我在虚拟机内运行 Linux,并且基本上每天都使用它。我只想使用一个简单的用例,让 Linux 用户与我的 AD 用户同步,就像在 Windows 中一样。
我已经设置好了,这样域名在 Linux 中就正确了,我可以用 realm discover 很好地解析域名。然后我可以用 kinit /“在线帐户”(ubuntu)功能为我的 forename.surename 帐户获取票证,但我无法超越这一点。
我尝试使用 msktutil 来获取 keytab 文件,但总是遇到一些权限问题。然后我尝试加入领域,比如 realm join -u forename.surname --computer-ou='' ,在将我的 linux 主机名更改为与我的 windows pc 相同的主机名后,这个方法看起来还不错。但随后也失败了,因为加入领域的过程显然需要为计算机帐户设置一个随机密码,而我没有权限。
然后我想,嘿,我的 Windows 主机上已经有了所有的票证和所有东西,难道我不能以某种方式将它们传递给 Linux VM 吗?这就是我目前所处的位置,但似乎我必须从处理器空间中提取票证,我真的不认为这是工作机器上的选项。还有其他我现在没有看到的可能性吗?谢谢你的帮助,我显然不知道我在做什么,但是嘿,问问也没什么坏处吧?:)
我们也有用于 SSO 的 ADFS 实现,但似乎没有可以让我仅使用 ADFS 服务器进行登录/身份验证的实现。
答案1
我只是想要一个简单的用例,让 Linux 用户与我的 AD 用户同步,就像在 Windows 中一样。
Windows 帐户的大多数“本地”属性实际上并不适用于单用户 Linux 系统。您的主目录路径将有所不同,您的组成员身份在本地无关紧要,AD 帐户可能没有为您的 POSIX 登录 shell 配置字段,因此它将默认为 /bin/sh,等等。唯一值得“同步”的是用于访问各种网络服务的 Kerberos 票证 - 您已经可以使用kinit
或pam_krb5
(或 GNOME 在线帐户,一旦带有 Kerberos 修复的 v44.0 推出)来执行此操作,而无需完全加入域。
我的 Windows 主机上已经有了所有票证和所有内容,难道我不能以某种方式将它们传递给 Linux VM 吗?这就是我目前所处的位置,但似乎我必须从处理器空间中提取票证,我不认为这在工作机器上是一种选择。
Windows 将其计算机帐户密码存储为“LSA 机密”。如果您的管理员尚未为 LSASS.EXE 部署额外的保护(顺便说一句,只是通过上周的 Windows 更新,Windows 11 默认启用了 LSA 密钥 (已在上周的 Windows 更新中启用),您可以使用多种工具之一转储 LSA 机密并复制机器密码,然后将ktutil
其存储在 /etc/krb5.keytab 的密钥表形式中 (和/或 SSSD 或 Winbind 可能需要的任何其他格式)。
请注意,Windows 和 Linux(SSSD/Winbind)都会每 30 天左右更改一次机器密码,因此请确保至少在 Linux 端禁用它。(一般来说,这就是它成为坏的在两个系统之间使用相同主机名的想法——如果您不小心禁用所有自动机器密码更改,您很快就会发现在尝试登录时出现“域信任关系失败”错误。)