NFS4 无 Kerberos:名称映射有效,但权限无效

NFS4 无 Kerberos:名称映射有效,但权限无效

我只是想在 NFS4 客户端和 NFS4 服务器之间“按用户名映射”,当每个客户端对于给定的用户名都有不同的 uid 时,无需设置 Kerberos。

情况:我的 Linux 机器(centos 7)访问各种 NFS4 服务器(运行 centos 7)

  • 没有可用的 Kerberos 或 NIS 或 AD
  • 每个服务器都有不同的 DNS 域(都与我的 Linux 机器的 DNS 域不同)
  • 服务器和我的 Linux 客户端的 UID 不同步(每个用户名“oracle”都有不同的本地 UID)
  • echo N > /sys/module/nfsd/parameters/nfs4_disable_idmapping在服务器和客户端上完成
  • 名称映射守护进程 rpcidmapd 在客户端和服务器上都启动
  • 客户端 /etc/idmapd.conf为用户提供静态映射
  • 作为 nfs4 挂载(sec=sys,因为没有集中式 Kerberos/etc)有效
  • ls -l显示“正确”的用户名和组名
  • 但是权限被忽略了,我必须设置 world rwx 来访问/遍历/写入文件,为什么??

背景问题:

  • 哪一方(客户端或服务器)应该做名称到 ID 的映射

  • 我客户端上的 idmapd.conf 是否正确(例如远程 NFS4 服务器 DNS 域是 eh.loc):

     [General]
     Verbosity = 7
     [Mapping]
     [Translation]
     Method = static
     [Static]
     [email protected] = oracle
     [email protected] = oinstall
     [email protected] = dba
    

答案1

nfs id 映射存在很大混淆。当字符串形式主体时使用的映射,如[电子邮件保护],必须转换为数字 ID,反之亦然。这是在您执行以下操作时完成的ls -l, 例如。

但是,当您使用 sec=sys 进行挂载时(您显然会这样做),所有请求都会使用客户端的本地 UID 和 GID 进行身份验证。换句话说,客户端进程的触摸 UID 将成为服务器上的文件所有者。实际上,idmapd+Kerberos 组合非常适合解决这个问题。

好吧,并不是每个环境都可以运行 Kerberos。您可以通过将这些主机的所有请求映射到单个 uid/gid 来强制使用单个 uid。

/data 10.0.1.1(rw,all_squash,anonuid=123,anongid=456)

相关内容