Windows的linux子系统无法使用NFS

需求:不能装双系统,虚拟机本地文件共享又不方便,所以想要用win10商店的linux子系统(ubuntu18.04)配合NFS实现本地的linux环境编程测试,再同步到服务器上。

结论:基于NFS的共享同步文件系统,不被win10的linux子系统支持,可能可以考虑SCP相关的方法,但公司内同样不能用ssh,所以只能转战虚拟机了。

此文记录了windows上配置NFS时所遇问题,包括

  • windows NFS client配置
  • windows NFS client写入权限配置
  • cmd/powershell管理员权限下找不到NFS net driver
  • windows的linux子系统NFS配置尝试

win10 NFS客户端配置

详见:win10 挂载NFS(网络文件夹)

win10 NFS客户端写入权限配置

win10 挂载NFS(网络文件夹)同样写明了win10端如何修改Uid和Gid模拟linux中root的方法。
但权限问题不仅需要客户端声明自己是root,还要服务器端承认。服务器端默认将所有的客户端请求映射到nobody用户,所以并不承认客户端声称的root权限。那么解决方法有两个,一个是配置NFS时指定no_root_squash,也就是不做root_squash映射,客户端声称的root权限有效;一个是设置文件对所有用户可见,chmod go+w

powershell管理员权限下找不到NFS的网络driver

参看Elevated command line prompt can’t access shared drives
应该是本地用户和管理员用户用的不是一个映射,答案中提供了两个方案,一个是用net use绑定,一个是改注册表使得映射在用户间共享。笔者嫌麻烦,反正是NFS,直接在管理员权限下重新用mount绑定了一次,就没问题了。这里第一次在windows中用command line挂载NFS,还遇到了“powershell中默认mount不是NFS的mount,要用.\mount.exe”的bug。

windows的linux子系统NFS配置尝试

网上找不到WSL使用NFS的解法,直接如ubuntu中用mount -t nfs会出现mount.nfs: no such device的bug。搜索后发现WSL里面压根没有linux kernel,自然会报错。

然后搜了几篇讨论,官方在2018.01月的时候明确说了NFS不支持,那个issue也没有被更新,应该就是不能用了。
Unable to run modprobe and mount NFS on the subsytem #2869
Setting up NFS and how to connect to it
DebianをWindows10上で動かす その6: Linuxとファイルを共有する

第二个reddit中说可以通过drvfs之类的方法将windows的网络driver绑定到WSL中,但是权限问题会很麻烦。
最后一个博客中提供了基于SCP的WSL与linux系统共享文件的解法,对笔者没什么用就没研究了。

暂时没找到什么成熟有效的解法,所以只好转战虚拟机了。

你可能感兴趣的:(Ubuntu,HackTrick)