Ubuntu挂载QNAP存储时NFSv4用户名映射失败求助
解决Ubuntu 16.04 NFSv4挂载QNAP时的用户名映射问题
你已经做了不少基础配置,但NFSv4的用户名映射(idmapping)对两端的一致性要求非常严格,咱们一步步排查和修正问题:
1. 确保两端Domain完全一致(核心前提)
NFSv4的idmapping是基于**域名(Domain)**来关联用户的,两端的Domain必须完全匹配(包括大小写):
- 确认Ubuntu客户端Domain:执行
hostname -d,返回值需和你/etc/idmapd.conf里设置的localdomain一致。如果不符,要么调整系统hostname配置,要么修改idmapd.conf的Domain字段。 - 确认QNAP的Domain:登录QNAP SSH终端,执行
hostname -d或查看/etc/idmapd.conf的Domain字段。如果QNAP的Domain不是localdomain,需要把两端Domain统一为同一个值(比如都用QNAP的主机域名,或都用localdomain)。
2. 修正Static映射的配置位置与格式
你当前在客户端配置的Static映射方向和格式都有问题:
- NFSv4的idmapping是双向的,但服务器端(QNAP)需要把客户端发来的带Domain的用户名映射成本地用户,所以要在QNAP的
/etc/idmapd.conf的[Static]段添加:
(解释:当QNAP收到客户端发来的jameswhite@localdomain = jamesjameswhite@localdomain标识时,会自动映射成本地的james用户) - 如果需要反向映射(服务器的
james在客户端显示为jameswhite),再在Ubuntu客户端的[Static]段添加:james@localdomain = jameswhite
3. 确保nfs4_disable_idmapping永久生效
你修改的/sys/module/nfs/parameters/nfs4_disable_idmapping是临时生效的,重启后会还原:
- Ubuntu客户端:新建或编辑
/etc/modprobe.d/nfs.conf,添加:
执行options nfs nfs4_disable_idmapping=N options nfsd nfs4_disable_idmapping=Nsudo update-initramfs -u更新initramfs,重启后配置永久生效。 - QNAP端:登录SSH,找到NFS模块配置文件(通常在
/etc/modprobe.d/或QNAP专属配置/etc/config/nfs),添加类似配置,确保重启后nfs4_disable_idmapping仍为N。
4. 重启服务并重新挂载
- QNAP端:执行
/etc/init.d/rpc.idmapd restart(若无效,试试systemctl restart rpc-idmapd,取决于QNAP系统版本),同时确保rpcbind服务在运行。 - Ubuntu客户端:先卸载已挂载目录,再重启服务重新挂载:
sudo umount /mnt/shared_dir sudo service nfs-idmapd restart sudo mount -v -t nfs4 <QNAP IP地址>:/shared_dir /mnt/shared_dir
5. 验证映射是否生效
挂载后在客户端创建测试文件:
touch /mnt/shared_dir/test_file
然后在QNAP上查看文件属主:
ls -l /share/shared_dir/test_file
如果属主显示为james,说明映射成功;若仍是nobody,再检查:
- QNAP的NFS共享是否给
james用户分配了读写权限?可在Web界面的共享设置中添加该用户权限。 - QNAP的rpc.idmapd进程是否运行?执行
ps aux | grep rpc.idmapd确认。 - 查看两端日志:Ubuntu日志在
/var/log/syslog,QNAP日志可在Web界面系统日志或/var/log/messages中查找rpc.idmapd相关报错。
内容的提问来源于stack exchange,提问作者Pietro Astolfi
相关产品推荐
相关产品推荐

