ubuntu开启NFS网络文件共享服务,并使用windows访问及排错过程

系统环境

nfs服务器

ubuntu server 22.04

要共享的文件路径为:~/,其对应的绝对路径为/home/ken

nfs客户端

windows 11 24h2工作站专业版

NFS服务器设置

安装NFS服务
sudo apt update
sudo apt install nfs-kernel-server
配置共享目录

打开配置文件

sudo nano /etc/exports

在文件末尾加入以下内容

/home/ken *(rw,sync,no_subtree_check,no_root_squash)
  • rw 表示读写权限。

  • sync 表示数据会同步写入。

  • no_subtree_check 禁用子目录检查,防止错误。

  • * 表示任何客户端IP都允许

  • 其中no_root_squash参数非常重要(没有的话,windows下挂载目录时,能正常挂载但不显示该目录下的文件,而且在该目录下也无法创建文件!!!),no_root_squash:root用户具有对根目录的完全管理访问权限。

重新加载NFS服务
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
加入开机自启
sudo systemctl enable nfs-kernel-server
检查共享

可以通过以下命令查看共享目录是否配置正确

sudo exportfs -v

客户端挂载

windows(11)方式

安装NFS客户端

在控制面板中开启即可,如下图所示:

访问NFS共享

先在windows地址栏输入共享路径,看看是否能访问:\\192.168.70.182\home\ken

直接显示没有访问权限的错误,如下图所示:

上述错误解决办法:在注册表该路径下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

加入以下两个QWORD键值:AnonymousGidAnonymousUid,值为0即可

如下图所示:

或者在powershell(以管理员方式运行)中执行以下命令也可:

# 设置注册表路径
$regPath = "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default"

# 确保该路径存在,如果不存在则创建
if (-not (Test-Path $regPath)) {
    New-Item -Path $regPath -Force
}

# 创建 AnonymousGid 和 AnonymousUid 注册表项并赋值为 0
New-ItemProperty -Path $regPath -Name "AnonymousGid" -Value 0 -PropertyType QWord -Force
New-ItemProperty -Path $regPath -Name "AnonymousUid" -Value 0 -PropertyType QWord -Force

记得重新电脑。

现在可以正常浏览和创建文件了:

也可以通过以下命令挂载到映射驱动器Z:

mount 192.168.70.182:/home/ken Z:

卸载映射驱动器命令为

umount z:

查看共享目录挂载信息命令为

mount

linux(ubuntu)方式

安装NFS客户端
sudo apt update
sudo apt install nfs-common
挂载NFS共享

记得要替换一下服务器ip

(为什么不需要任何用户认证方面的信息,因为前面创建共享目录时设置了允许任何客户端读写)

sudo mount 192.168.70.182:/home/ken /mnt
测试文件浏览与创建
cd /mnt
ls -lah
nano new_file.txt

备注

上面的配置在安全性方面有所欠缺,如果在生产环境中使用NFS,要确认在该方面考虑周全。

关于如何设置用户认证等安全相关的配置,可参考网上其他文章。

常见问题

(1) 如果在配置共享目录时,即该行:/home/ken *(rw,sync,no_subtree_check,no_root_squash)

没有指定no_root_squash,那么在windows挂载时可能会出现能成功挂载目录,但无法浏览和创建文件的情况,如下图所示:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值