← 返回首页

Linux NFS 服务搭建与 Windows 客户端挂载完整教程

NFS(Network File System)网络文件系统允许不同操作系统之间共享文件和目录。本文详细介绍如何在 CentOS/RHEL 系列 Linux 上配置 NFS 服务端,并在 Windows 10/11 上通过 NFS 客户端挂载共享目录。

一、Linux 服务端配置(NFS Server)

1. 安装 NFS 相关软件包

使用 yum 安装 nfs-utils 和 rpcbind(RPC 端口映射服务):

yum install -y nfs-utils rpcbind

2. 创建共享目录并设置权限

假设共享目录为 /data/nfs,创建并赋予适当权限:

mkdir -p /data/nfs chmod 755 /data/nfs

提示:no_root_squash 与 all_squash 配合 anonuid=0,anongid=0 会使所有客户端访问者映射为 root 身份,请根据实际安全需求调整。

3. 配置 exports 文件

编辑 /etc/exports,添加以下内容:

vi /etc/exports

写入:

/data/nfs 10.21.1.0/24(rw,sync,no_root_squash,all_squash,anonuid=0,anongid=0)

参数解释:

参数说明
rw允许读写
sync同步写入,保证数据一致性
no_root_squash不压缩 root 权限(此处配合 all_squash + anonuid=0 实际使所有用户映射为 root)
all_squash将所有客户端用户映射为匿名用户
anonuid=0,anongid=0指定匿名用户的 UID/GID 为 0(即 root)

⚠️ 生产环境请谨慎使用 anonuid=0,建议创建专用普通用户并赋予相应目录权限。

4. 启动服务并设置开机自启

systemctl enable rpcbind systemctl enable nfs systemctl start rpcbind systemctl start nfs

5. 验证共享是否发布成功

exportfs -v showmount -e localhost

示例输出:

Export list for localhost: /data/nfs 10.21.1.0/24

6. 防火墙放行(如果防火墙开启)

firewall-cmd --permanent --add-service=nfs firewall-cmd --permanent --add-service=rpc-bind firewall-cmd --reload

二、Windows 客户端挂载(Windows 10 / 11)

1. 安装 NFS 客户端功能

按 Win + R,输入 OptionalFeatures 并回车。

在 Windows 功能 窗口中,找到 NFS 服务,勾选以下三项:

✅ NFS 客户端

✅ 管理工具(可选,但命令行挂载不需要)

✅ Internet 信息服务(不需要,但建议只勾选 NFS 客户端即可)

💡 实际上只需勾选 NFS 客户端 即可,无需安装管理工具。勾选后点击“确定”,系统会自动安装所需组件,并提示重启电脑。

重启计算机 使 NFS 客户端生效。

2. 修改注册表(解决匿名用户权限映射问题)

默认情况下 Windows NFS 客户端以匿名用户(UID/GID = -2)访问,会导致 Linux 服务端因权限不匹配而拒绝写入。需要强制指定匿名用户的 UID/GID 与 Linux 服务端期望的一致(本例中服务端映射到 root 即 0)。

按 Win + R,输入 regedit 打开注册表编辑器。

导航到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

如果 Default 项不存在,则右键 CurrentVersion → 新建 → 项,命名为 Default。

在右侧空白处右键 → 新建 → DWORD (32 位)值,分别创建:

AnonymousUid → 双击,数值数据填 0(十进制)

AnonymousGid → 双击,数值数据填 0(十进制)

点击确定,关闭注册表编辑器。

修改完成后必须重启电脑 使注册表生效。

📌 如果你的 NFS 服务端使用了其他 anonuid/anongid,请将 AnonymousUid 和 AnonymousGid 设置为对应的数值。

3. 挂载 NFS 共享

重启后,以 管理员身份 打开命令提示符(CMD)或 PowerShell。

方法一:命令行挂载(推荐)

mount -o anon \\10.21.1.100\data\nfs X:

10.21.1.100 替换为你的 Linux NFS 服务器 IP

/data/nfs 替换为服务端共享路径(Windows 语法用 \ 分隔)

X: 为要映射的盘符

方法二:使用图形界面(仅限 Windows Server 或安装了管理工具) 打开 计算机 → 右键 映射网络驱动器

文件夹输入:\10.21.1.100\data\nfs

勾选 使用其他凭据连接(如有需要)

4. 验证挂载成功

打开 此电脑,应看到新盘符 X:

尝试创建、修改、删除文件测试权限。

命令行查看已挂载的 NFS 共享:

mount

示例输出:

X: \\10.21.1.100\data\nfs
  1. 卸载 NFS 共享
umount X:

三、常见问题与排查

现象可能原因解决方案
mount 报错 "网络错误"Linux 防火墙未放行 NFS/RPC检查防火墙规则,或临时关闭 systemctl stop firewalld 测试
能列出文件但无法写入Windows 匿名用户 UID/GID 未设置检查注册表是否添加 AnonymousUid/AnonymousGid 并重启
挂载后文件属主为 nobodyLinux 端 all_squash + anonuid 设置不当检查 /etc/exports 配置,确保 anonuid=0,anongid=0 或符合预期
Windows 无法解析服务器名未使用 IP 或 DNS 解析失败直接使用 NFS 服务器的 IP 地址挂载

四、总结

通过以上步骤,你可以在 Linux 上轻松搭建 NFS 服务,并在 Windows 客户端上完成挂载。关键点在于:

Linux 端正确配置 /etc/exports 并开放防火墙;

Windows 端安装 NFS 客户端并 修改注册表 指定匿名用户映射;

挂载命令使用 mount -o anon 确保以匿名用户身份访问。

如有更多高级需求(如 Kerberos 认证、NFSv4 等),请参考官方文档进一步配置。

适用系统: CentOS 7/8 / RHEL / Rocky Linux 9, Windows 10/11/Windows Server 2019+