Linux NFS 服务器配置

1. 在Ubuntu系统上安装并启动NFS服务

sudo apt install nfs-kernel-server
sudo systemctl start nfs-kernel-server.service

2. 配置NFS服务

编辑配置文件/etc/exports,键入要导出的条目:

/home *.hostname.com(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
  • /home为需要使用NFS的导出目录,
  • *.hostname.com可以替换为主机名或网段,用于挂载权限控制
  • anonuidanongid设置为NFS在该目录使用的用户和用户组的id,如果需要用root权限,将- all_squash,anonuid=1000,anongid=1000替换为no_root_squash

应用配置文件更新

sudo exportfs -a

Windows NFS 客户端配置

1. 启用NFS客户端

在Window系统上,打开 控制面板-程序-启用或关闭Windows功能 勾选NFS服务
在这里插入图片描述

2. 修改注册表配置访问权限

默认情况下,Windows使用UID=-2访问NFS,尽管设置了all_squash,仍然会导致有读和写权限,但文件无法修改的问题。

在服务器端应该是正常将权限squash成指定用户了,但可能由于Windows NFS客户端奇怪的权限配置阻止了部分访问行为。

具体现象如下:

NFS WIN下的客户端访问linux挂载来的数据只有只读权限的问题

解决方法是设置客户端使用root权限(UID=0)访问NFS。如果设置了squash,服务器端依然会使用指定的用户权限。

修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,新建两项名为AnonymousUidAnonymousUid,类型为DWORD(32位),值为0(默认)的项目。

随后重启Windows应用修改。

3. 连接NFS服务

打开当前用户的Powershell,输入以下命令挂载NFS盘:

New-PSdrive -PSProvider FileSystem -Name Z -Root \\server_host\path -Persist
  • 必需使用当前用户执行,否则Windows资源管理器中该存储器不可见,也无法通过命令行操作挂载的路径。
  • -Name Z即绑定到盘符Z:
  • \\server_host\path第一项设置为服务器域名、ip或hostname,后面为配置的NFS路径,如\\my_ubuntu\home
  • -Persist使得每次登录自动连接

4. 其他

若需要卸载ZFS磁盘,依然是在当前 用户的Powershell输入:

umount z:

后记

一般该场景下建议用SMB而非NFS

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐