设置Linux上提供Windows上挂载的NFS服务
本文介绍了Linux NFS服务器配置和Windows客户端的连接方法。在Ubuntu上安装nfs-kernel-server后,通过编辑/etc/exports文件配置共享目录及访问权限,应用更改后即可启动服务。Windows端需要启用NFS功能并修改注册表,将AnonymousUid和AnonymousGid设为0以解决权限问题,最后使用New-PSdrive命令挂载NFS共享。该方案实现了跨
·
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可以替换为主机名或网段,用于挂载权限控制anonuid和anongid设置为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客户端奇怪的权限配置阻止了部分访问行为。
具体现象如下:
解决方法是设置客户端使用root权限(UID=0)访问NFS。如果设置了squash,服务器端依然会使用指定的用户权限。
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,新建两项名为AnonymousUid和AnonymousUid,类型为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
更多推荐


所有评论(0)