好吧,我已经接近放弃这个了,但是这里还有一个尝试。 我有更多的问题比答案和任何帮助将不胜感激。
服务器上的操作系统是Debian Stretch,客户端是Debian Sid。 我有一个带Kerberos服务器的NFSv4(两台服务器在同一台物理机器上),它导出/ home / User1。 /etc/exports是
/home/User1 gss/krb5(rw,insecure,sync,wdelay,no_subtree_check,no_root_squash)
我在/ etc / default / nfs-common中启用了idmap, idmapd.conf是
[General] Verbosity = 5 Pipefs-Directory = /run/rpc_pipefs Domain = MyDomain [Mapping] Nobody-User = nobody Nobody-Group = nogroup
现在,客户端拥有与User1相同的User2。 但是,由于某些原因,User1和User2的string必须不同。 客户端上的idmapd.conf文件是完全一样的。 当我以root Server:/home/User1身份从客户端装载Server:/home/User1 ,Kerberos服务器根据机器authentication(/ tmp / krb5ccmachine)发出服务票据,并且可以挂载/ home / User1。 但是,正如您可能已经猜到的那样,挂载的目录的所有权全部搞乱了。 首先,no_root_squash选项被完全忽略,所以即使客户端的root也不能写入挂载的目录。 用户2甚至不能进入它。
现在,据我所知,NFS服务器并不知道客户机上的根目录是root(为什么不应该将root@MyDomain翻译成服务器上的根目录?)从我从这个网站的类似问题中收集的信息,修改了服务器的idmapd.conf修复了这个问题:
[Translate] GSS-Methods = static [Static] nfs/client@MYREALM = root #principal used to authenticate client
令人恼火的是,即使在将更改恢复到idmapd.conf并重新启动nfs服务器之后,根目录仍然拥有完全的权限。 这种持久性来自哪里?
我的主要问题是:如何挂载/ home / User1以使User2成为挂载目录的所有者,并且使User2创build的任何文件将显示为User1在服务器上的所有权? 在NFSv3中,似乎这很简单,因为所有权是由uid:gid确定的。 这甚至可能与NFSv4?