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
- 卸载 NFS 共享
umount X:
三、常见问题与排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
mount 报错 "网络错误" | Linux 防火墙未放行 NFS/RPC | 检查防火墙规则,或临时关闭 systemctl stop firewalld 测试 |
| 能列出文件但无法写入 | Windows 匿名用户 UID/GID 未设置 | 检查注册表是否添加 AnonymousUid/AnonymousGid 并重启 |
挂载后文件属主为 nobody | Linux 端 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+