NFSv4 idmapd 忽略无人用户

NFSv4 idmapd 忽略无人用户

我有一个文件夹,其所有者是ftp:users。我想导出此文件夹并将所有请求映射到ftpID 为 107 的用户。/etc/exports我有以下内容:

/media/other    10.1.1.10(rw,sync,all_squash,no_subtree_check,anonuid=107)

这按预期工作。在客户端,我想将这些匿名请求映射到不同的用户,因此/etc/idmapd.conf我有以下内容:

Nobody-User = nfsanon
Nobody-Group = nfsanon

但是当通过 NFSv4 挂载时,所有内容都归 拥有nobody:users。它正确映射了组(该组也存在于客户端上),但ftp客户端上不存在的用户被映射到nobody而不是Nobody-Useridmapd.conf

为了理解为什么会发生这种情况,我提高了详细程度,并深入研究了客户端日志。一次挂载尝试会产生以下结果:

nfsidmap[8610]: key: 0x28bf0a94 type: uid value: [email protected] timeout 600
nfsidmap[8610]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[8610]: nss_getpwnam: name '[email protected]' domain 'dom.ain': resulting localname 'root'
nfsidmap[8610]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0
nfsidmap[8610]: nfs4_name_to_uid: final return value is 0
nfsidmap[8612]: key: 0xfe99b5c type: gid value: [email protected] timeout 600
nfsidmap[8612]: nfs4_name_to_gid: calling nsswitch->name_to_gid
nfsidmap[8612]: nfs4_name_to_gid: nsswitch->name_to_gid returned 0
nfsidmap[8612]: nfs4_name_to_gid: final return value is 0
nfsidmap[8615]: key: 0x18a11cb type: uid value: [email protected] timeout 600
nfsidmap[8615]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[8615]: nss_getpwnam: name '[email protected]' domain 'dom.ain': resulting localname 'ftp'
nfsidmap[8615]: nss_getpwnam: name 'ftp' not found in domain 'dom.ain'
nfsidmap[8615]: nfs4_name_to_uid: nsswitch->name_to_uid returned -2
nfsidmap[8615]: nfs4_name_to_uid: final return value is -2
nfsidmap[8615]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[8615]: nss_getpwnam: name '[email protected]' domain 'dom.ain': resulting localname 'nobody'
nfsidmap[8615]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0
nfsidmap[8615]: nfs4_name_to_uid: final return value is 0
nfsidmap[8617]: key: 0x3ab07a1f type: gid value: [email protected] timeout 600
nfsidmap[8617]: nfs4_name_to_gid: calling nsswitch->name_to_gid
nfsidmap[8617]: nfs4_name_to_gid: nsswitch->name_to_gid returned 0
nfsidmap[8617]: nfs4_name_to_gid: final return value is 0

因此看起来客户端 idmapd 尝试映射ftp用户,但失败了。

nss_getpwnam: name '[email protected]' domain 'dom.ain': resulting localname 'ftp'
nss_getpwnam: name 'ftp' not found in domain 'dom.ain'
nfs4_name_to_uid: nsswitch->name_to_uid returned -2

然后它实际上尝试映射nobody而不是使用Nobody-User。由于nobody用户存在于客户端上,因此成功。

nss_getpwnam: name '[email protected]' domain 'dom.ain': resulting localname 'nobody'
nfs4_name_to_uid: nsswitch->name_to_uid returned 0

我就是搞不懂它为什么要尝试映射。这可能是在导出中nobody使用时触发的错误吗?anonuid

为了完整起见,以下是服务器日志

rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=user
rpc.idmapd[4726]: nfs4_uid_to_name: calling nsswitch->uid_to_name
rpc.idmapd[4726]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0
rpc.idmapd[4726]: nfs4_uid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (user) id "0" -> name "[email protected]"
rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=group
rpc.idmapd[4726]: nfs4_gid_to_name: calling nsswitch->gid_to_name
rpc.idmapd[4726]: nfs4_gid_to_name: nsswitch->gid_to_name returned 0
rpc.idmapd[4726]: nfs4_gid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (group) id "0" -> name "[email protected]"
rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=user
rpc.idmapd[4726]: nfs4_uid_to_name: calling nsswitch->uid_to_name
rpc.idmapd[4726]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0
rpc.idmapd[4726]: nfs4_uid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (user) id "107" -> name "[email protected]"
rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=group
rpc.idmapd[4726]: nfs4_gid_to_name: calling nsswitch->gid_to_name
rpc.idmapd[4726]: nfs4_gid_to_name: nsswitch->gid_to_name returned 0
rpc.idmapd[4726]: nfs4_gid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (group) id "100" -> name "[email protected]"

附言:在任何人提出建议之前,我不希望切换回 NFSv3 来“解决”我的问题。

相关内容