Windows 11挂载NFS共享后无法写入的问题求助
看起来你已经把基础的UID/GID映射配置好了,但Windows的NFS客户端确实经常会有一些容易忽略的细节导致写入权限问题,我帮你梳理几个可能的排查方向和解决方案:
1. 先检查NFS服务器的export参数是否需要调整
你的/etc/exports里目前没有加insecure参数,而Windows的NFS客户端默认会使用大于1024的端口发起连接,标准NFS服务器默认只接受小于1024的特权端口请求,这可能会导致写入操作被拦截。
修改/etc/exports:
/mnt/files 192.168.0.0/16(rw,sync,no_subtree_check,insecure)
然后重启NFS服务:
sudo systemctl restart nfs-server
2. 调整Windows本地的passwd/group文件格式
Windows的NFS身份映射文件有时候不需要指定服务器IP前缀,你可以尝试修改这两个文件:
- C:\windows\system32\drivers\etc\passwd:改成
rodrix:x:1000:1000:My NFS user:C:\Users\rodrix - C:\windows\system32\drivers\etc\group:改成
mynetwork:x:1002:rodrix
修改后重启Windows的NFS服务:可以在服务列表里找到「Client for NFS」重启,或者用管理员命令行执行:
net stop nfsclient && net start nfsclient
3. 用命令行指定UID/GID挂载,避免匿名身份
有时候Windows图形界面挂载会默认用匿名用户,你试试用管理员命令行执行挂载命令,强制指定UID和GID:
mount \\192.168.1.101\mnt\files Z: -o uid=1000,gid=1002
如果需要验证身份,也可以加上用户参数:
mount \\192.168.1.101\mnt\files Z: -o user=rodrix,uid=1000,gid=1002
4. 检查Ubuntu服务器的NFS日志,定位具体错误
你可以查看Ubuntu的NFS服务日志,看看Windows客户端写入时的具体拒绝原因:
journalctl -u nfs-server -f
或者查看syslog:
tail -f /var/log/syslog | grep nfs
日志里会显示客户端的UID/GID、请求的操作和拒绝原因,能帮你精准定位问题。
5. 确认Windows NFS客户端的身份映射设置
打开Windows的「控制面板」→「程序」→「打开或关闭Windows功能」,确保「Services for NFS」下的「Client for NFS」已启用。然后:
- 在运行里输入
nfsadmin client打开「NFS客户端属性」 - 切换到「身份映射」标签页
- 确保选择了「使用本地用户和组」,并且勾选了「将未知UID映射到匿名用户」(如果没勾选,可能会导致身份不匹配时直接拒绝)
6. 检查Ubuntu目录的ACL设置(如果有的话)
虽然Linux客户端没问题,但Windows的NFS请求可能受ACL影响,你可以用下面的命令查看/mnt/files的ACL:
getfacl /mnt/files
确保mynetwork组有write权限,如果没有的话,添加ACL规则:
setfacl -m g:mynetwork:rwx /mnt/files
你可以先从第1和第3步开始尝试,这两个是最常见的导致Windows NFS写入失败的原因,有结果的话可以反馈一下细节~
备注:内容来源于stack exchange,提问作者Rodrix

