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