Windows 挂载 Linux 的 NFS 共享:三步挂上盘符,身份映射这笔账别漏

公司里的存储格局常常是这样:文件服务和业务系统跑在 Linux 上,共享目录用 NFS 开出来,Linux 服务器之间挂得好好的。轮到 Windows 工位机要访问,麻烦来了——要么提示挂载失败,要么挂是挂上了,进去一看文件打不开、写不进去,权限一栏全是看不懂的数字。命令行里 showmount 明明能查到导出列表,偏偏 mount 就是不配合。

这类问题的根子通常不在 Linux 那头,而在 Windows 这头少做了功课:客户端功能没启用,或者身份没对上。

第一步,把 NFS 客户端功能打开。Windows 出厂默认不带这个客户端,去「启用或关闭 Windows 功能」里,勾上 NFS 服务下面的「NFS 客户端」,确定。装完不用重启,命令行里 showmount 命令就能用了。

第二步,验证并挂载。管理员身份打开命令行:先用 showmount -e 加服务器地址,确认能看到导出路径;再用 mount 命令挂载,写成 mount -o anon \服务器地址\导出路径 Z: 这样的形式,Z: 就是挂上去之后的盘符。看到命令成功完成的提示,资源管理器里就多出一个网络位置。想卸载,用 umount Z:。

第三步,算清身份映射这笔账。挂载成功不等于有权限——这是 NFS 挂载里被坑频率很高的一个点。Linux 侧的导出权限是按 uid、gid 这些数字身份来认的,而 Windows 客户端默认拿不出这组数字,走的是匿名访问,映射到 Linux 侧往往就是 nobody 之类的低权限账户:于是你能看到目录结构,却动不了里面的文件。要让 Windows 以指定身份去访问,常见做法是在注册表里 ClientForNFS 相应位置配置 AnonymousUid、AnonymousGid 两个值,填成 Linux 侧授权账户对应的 uid、gid 编号,再重启客户端服务生效。两边身份对上了,读写权限才真正对上。

挂上了但权限不对,按两条线自查:Linux 侧看导出配置有没有给这台机器所在网段读写权限、有没有把身份压成匿名账户的参数;Windows 侧看映射出来的身份落不落在授权名单里。两头各查一遍,问题一般能锁定在哪边。

顺带划个界:Windows 想访问 Linux 上已经挂载过的 NFS 目录、为什么走二次共享行不通——那是跨层挂载的机制问题,此前单独聊过;本篇只管 Windows 直连挂载这一条路。

混合环境里 Windows 与 Linux 互相访问的账还有很多笔,协议选型、身份对接、权限规划,缺一环就卡一环。贵州诚鑫致达科技在做企业混合环境交付时,会把共享协议选型与身份映射一次性配到位。你们办公室现在是 SMB 通吃,还是 SMB 和 NFS 混着用?评论区聊聊。