Rob*_*ski 12 linux users nfsv4
我有一个服务器(Debian),它通过 NFS 为某些文件夹提供服务,还有一个客户端(Debian),它连接到 NFS 服务器(使用 NFSv4)并安装导出的文件夹。到目前为止一切都很好,我可以连接和修改文件夹的内容。但用户完全搞砸了。据我了解,这是由于 NFS 使用 UID 来设置权限,并且由于来自客户端和服务器的用户的 UID不同,因此会发生这种情况,这仍然是意料之中的。但据我所知,通过启用 NFSv4,IDMAPD 应该启动并使用用户名而不是 UID。用户确实存在于服务器和客户端上方面,他们只是有不同的 UID。但无论出于何种原因 IDMAPD 不起作用或似乎没有做任何事情。
所以这是我到目前为止所做的:
在服务器端:
在客户端
重新启动并重新启动了几次,但仍然没有。当我从服务器创建一个带有用户A的文件夹时,在客户端上我看到文件夹所有者是某个用户X。当我使用用户A从客户端创建文件时,在服务器端它说它来自某个用户Y。
我用 HTOP 检查了 rpc.idmap 进程正在服务器上运行,确实如此。尽管在客户端上它似乎没有运行。通过尝试在客户端上手动启动服务,我刚刚收到一条错误消息,指出 IDMAP 需要运行 nfs-kernel-server 依赖项。所以我把它安装在Client端,现在我有 rpc.idmap 进程在Client和Server上运行。两个都重启了,问题依旧。
知道这里有什么问题吗?或者如何正确配置它?
seb*_*sth 17
在使用默认 AUTH_SYS 身份验证(sec=sys挂载选项)而不是 Kerberos 的挂载上使用 NFSv4 id 映射时,有几件事需要注意。
注意:使用AUTH_SYSidmapping 仅转换用户/组名称。仍会根据本地 UID/GID 值检查权限。使用用户名获得权限的唯一方法是使用 Kerberos。
在最近的内核中,只有服务器使用 rpc.idmapd(记录在 中man rpc.idmapd)。使用 idmap 时,用户名以user@domain格式传输。除非在 中配置了域名/etc/idmapd.conf,否则 idmapd 使用系统的 DNS 域名。为了使idmap正确映射用户,客户端和服务器上的域名需要相同。
其次,内核默认禁用 NFSv4sec=sys挂载的id 映射。将nfs4_disable_idmapping参数设置为 false 会启用sec=sys挂载的id 映射。
在服务器上:
echo "N" > /sys/module/nfsd/parameters/nfs4_disable_idmapping
Run Code Online (Sandbox Code Playgroud)
和客户端:
echo "N" > /sys/module/nfs/parameters/nfs4_disable_idmapping
Run Code Online (Sandbox Code Playgroud)
您需要nfsidmap -c在客户端上清除 idmap 缓存,以使更改在挂载的 NFSv4 文件系统上可见。
要使这些更改永久化,请在中创建配置文件/etc/modprobe.d/,
在服务器( modprobe.d/nfsd.conf) 上:
options nfsd nfs4_disable_idmapping=N
Run Code Online (Sandbox Code Playgroud)
在客户端( modprobe.d/nfs.conf) 上:
options nfs nfs4_disable_idmapping=N
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16621 次 |
| 最近记录: |