NFS 如何确定可以授予哪些 Kerberos 凭证/主体访问权限?

NFS 如何确定可以授予哪些 Kerberos 凭证/主体访问权限?

我正在使用 Kerberos 设置 NFS,并遵循各种指南,例如Ubuntu Wiki 上带有 Kerberos 的 NFSv4如何使用 Kerberos 控制对 NFS 网络共享的访问等等。所有指南都遵循相同的基本模式:

  • 设置 KDC
  • 创建一个基于密钥的主体,nfs/nfs-server并确保这些密钥/etc/krb5.keytab位于NFS 服务器
  • 创建一个基于密钥的主体,nfs/nfs-client并确保这些密钥/etc/krb5.keytab位于NFS 客户端

下一步让我很困惑。一旦/etc/exports进入 NFS 服务器,就会变成某种变体...

/nfs/some-dir    [ip-address](rw,sec=krb5p,all_squash,sync)

... NFS 服务器如何知道已将哪个 Kerberos 主体分配给自己?更基本的是 - NFS 服务器如何知道已将 Kerberos 域添加到哪个域?此外,NFS 服务器如何知道允许访问哪些 Kerberos 主体?域中可能有许多 Kerberos 用户/主体,但并非所有用户/主体都应被允许访问特定的 NFS 导出。

类似地,一旦在 NFS 客户端上执行以下操作...

mount -t nfs4 -o sec=krb5p [ip-address]:/nfs/some-dir /mnt/some-dir

...NFS 客户端如何知道在与 NFS 服务器通信时应使用哪个 Kerberos 主体/密钥?

/etc/krb5.keytab和文件中是否存在一些隐含的魔法/etc/krb5.conf

答案1

Kerberized NFS(一般来说任何 Kerberized 服务)使用几个发现选项来找出要使用的 Kerberos 领域。第一个地方是/etc/krb5.conf您可以明确指定要使用的默认领域:

[libdefaults]
...
default_realm = YOUR.REALM

如果未指定任何内容,则客户端可以向 DNS 服务器查询 kerberos 服务记录。最后,使用域名。NFS 服务器将扫描/etc/krb5.keytab文件以查找用于 gss 握手的适当主机主体。

当最终用户访问 NFS 服务器时,会为每个客户端建立一个专用的 GSS 上下文。在服务器端,您需要一个映射服务,通常是 nfsidmapd,它根据系统配置使用本地密码文件的 LDAP 服务器将 kerberos 主体映射到本地 uid/gid。授权基于 unix 权限或 ACL(如果已配置)进行。

相关内容