我已经将 NFSv3 与通用 Linux NFS 服务器以及带有 Windows AD 2012 域的多个 Linux 客户端(适用于 Kerberos 领域)结合使用。
Windows KDC 要求,当您创建用于 NFS 服务器身份验证的密钥表时,您必须将 AD 用户映射到服务主体(Linux 客户端)。当您使用 ktpass 创建密钥表时,您需要输入该用户的密码,即用于创建密钥的密码。
因此,为了为每个新的 Linux 客户端创建一个新的服务主体并创建特定的密钥表,我必须将每个服务主体(Linux 客户端)映射到 AD 中唯一的用户主体。
如果我将服务主体映射到相同的用户主体,每次运行 ktpass 时,之前为其他客户端创建的密钥表都会停止工作,因为该用户的密钥会发生变化。因此,您必须为每个新客户端的每个服务主体创建一个新的用户主体,这似乎是一场管理噩梦。
我的笔记在这里 -
https://github.com/compendius/Kerberized-NFSv3-with-Active-Directory-KDC
对此的一个解决方法是,如果我将为第一个 Linux 客户端创建的第一个密钥表用于所有 Linux 客户端,那么这种方法就很有效,并且让我不必每次都创建大量新用户并导出新的密钥表。这是一种通用方法。
所以我的问题是 -
所建议的解决方法是否符合 Kerberos 的精神,因为尽管它可以工作,但它无法通过特定的服务主体正确识别 Linux 客户端?(我不确定 keytab 识别实际客户端是否那么重要,因为用户随后通过使用 kinit 进行身份验证来识别自己,从而真正将内容写入 NFS 导出)
任何澄清都很好
答案1
你是意味着将服务的密钥表分发给每个需要它的人。
如果您重新生成密钥表,KVNO(版本号)将会增加,从而使该服务的任何其他具有较低 KVNO 的密钥表无效。