win7下设置挂载Linux服务器nfs共享的数据 -- 转

时间:2023-03-08 16:05:35

最近学习NFS文件系统的使用,Ubuntu上配置好了,想和Win7共享数据,所以网上搜到了这篇文章。借花献佛,跟大家共享一下:

http://www.2cto.com/os/201207/139132.html

win7下设置挂载Linux服务器nfs共享的数据

win7下增加了很多有用的功能,只是默认没有开启而已,今天简述下一个WIN7下的NFS功能,通过这个功能,可以让win7共享Linux 下面的磁盘分区或者目录数据,这个功能原理只能通过samba或者ftp来实现,并且配置复杂,而现在通过在win7下开启NFS功能,只需一分钟时间即 可完成配置,简单方便。
1:首先是在linux下设置nfs数据共享
  www.2cto.com  
[root@localhost ~]# more /etc/exports 
/app   192.168.12.134(rw,no_root_squash)
然后执行:
[root@localhost ~]# exportfs  -av
exporting 192.168.12.134:/app
2:在win7下开启nfs功能,如图:
win7下设置挂载Linux服务器nfs共享的数据  -- 转

3:接着开始在win7进行挂载操作,如下图:

win7下设置挂载Linux服务器nfs共享的数据  -- 转

此时就能看到挂载上来的磁盘分区了:如图:

win7下设置挂载Linux服务器nfs共享的数据  -- 转

4:修改win7对nfs分区只读属性Win7 NFS客户端使用mount命令挂载NFS服务之后,文件系统对Win7只读,无法写入文件,无法新建文件夹,此时使用mount命令可以查看到如下状态:
win7下设置挂载Linux服务器nfs共享的数据  -- 转
可以看到UID=-2由于在存储设备上共享出来的NFS文件系统归属于root权限,并且无法修改该所属用户,而Windows通过UID=-2的用户去写,肯定写不进去。 
解决办法就是让Win7在挂载NFS的时候将UID和GID改成0即可:打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\ClientForNFS\CurrentVersion\Default,
增加两 项:AnonymousUid,AnonymousGid,如图:
win7下设置挂载Linux服务器nfs共享的数据  -- 转
重新启动计算机,重新mount即可。此时就能在win7下对nfs文件系统进行读写操作了,跟本地磁盘一样。
查看mount属性,如下:
win7下设置挂载Linux服务器nfs共享的数据  -- 转
mount命令在win7下的具体用法如下:
win7下设置挂载Linux服务器nfs共享的数据  -- 转
如果要去掉nfs共享,只需只需卸载命令即可,umount用法如下:
win7下设置挂载Linux服务器nfs共享的数据  -- 转
作者 南非蚂蚁
具体到我的电脑上就是:
mount  \\10.11.52.249\windows\nfs_root H:
卸载时使用: umount
可能会遇到的问题:
这两天在搭建嵌入式开发环境,配置好NFS服务器后,遇到了一个很纠结的错误
使用 mount -t nfs 127.0.0.1:/home/lzgonline/rootfs /mnt 和 mount -t nfs 192.168.1.9:/home/lzgonline/rootfs /mnt 本机挂载nfs则没有问题,然而使用 mount -t nfs 192.168.3.12:/home/lzgonline/rootfs /mnt 时却出现了问题,导致开发板无法通过nfs挂载启动,其中192.128.3.12 和 192.128.1.9(即nfs服务器)之间建立了映射(DMZ)关系。
mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs
百度、谷歌了很久,大部分都说是权限设置有问题,其实文件夹权限都设为777了,权限上都没问题,hosts.deny和hosts.allow都保留默认设置,防火墙也关了,该设置的都设置了,但还是被拒绝,很是郁闷,就在一筹莫展的时候,通过查看一些linux技术论坛后逐渐找到了问题所在。
首先使用命令查看出错日志文件
[root@lzgonline init.d]# cat /var/log/messages | grep mount
Jun 29 00:49:04 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1689
Jun 29 00:51:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1710
Jun 29 01:02:17 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1916
Jun 29 01:09:51 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2157
Jun 29 01:17:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2318
从出错日志可以看出,mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs 被拒绝的原因是因为使用了非法端口,功夫总没白费,终于在一个linux技术论坛上找到了答案:
I googled and found that since the port is over 1024 I needed to add the "insecure" option to the relevant line in /etc/exports on the server. Once I did that (and ran exportfs -r), the mount -a on the client worked.
//如果端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作:
查看 exports 手册中关于 secure 选项说明也发现确实如此
[root@lzgonline init.d]# man exports
secure,This  option requires that requests originate on an Internet port less than IPPORT_RESERVED (1024). This option is on by default. To turn it off, specify insecure.
//secure 选项要求mount客户端请求源端口小于1024(然而在使用 NAT 网络地址转换时端口一般总是大于1024的),默认情况下是开启这个选项的,如果要禁止这个选项,则使用 insecure 标识
修改配置文件/etc/exports,加入 insecure 选项
/home/lzgonline/rootfs  *(insecure,rw,async,no_root_squash)
保存退出
然后重启nfs服务:service nfs restart
然后问题就解决了