在 RH254小结(四)NFS服务器的搭建 中介绍了linux下NFS服务器的搭建及Linux客户端的挂载。在实际应用,有可能遇到windows和linux之间互相挂载访问文件的情况,除了samba服务之外,也可以通过NFS实现。目前主流的windows OS 如 win7、win2008都默认已带有NFS客户端,只需要系统中开启即可。本篇就记录下windows客户端访问 linux NFS服务端。
一、防火墙与端口(centos6.x与centos7.x的区别)
在进入正题之前,先完善下上一篇中有关端口和防火墙配置部分。在centos中有一个配置文件/etc/sysconfig/nfs用于配置nfs中的一些参数项,其中用修改最多的是几个服务运行的端口。在centos6和centos5中lockd、rquotad、statd、mountd几个服务都运行在非固定端口,需要单独进行指定,常用的方法如下:
# vim /etc/sysconfig/nfs
增加如下几行
RQUOTAD_PORT=10001 LOCKD_TCPPORT=10002 LOCKD_UDPPORT=10002 MOUNTD_PORT=10003 STATD_PORT=10004
重启服务后,相应的在iptables 防火墙的配置如下:
iptables -A INPUT -p tcp --dport 111 -j ACCEPT //rpcbind端口,tcp和udp都用 iptables -A INPUT -p udp --dport 111 -j ACCEPT iptables -A INPUT -p tcp --dport 2049 -j ACCEPT //nfs服务端口,tcp和udp都用 iptables -A INPUT -p udp --dport 2049 -j ACCEPT iptables -A INPUT -p tcp --dport 10001:10004 -j ACCEPT //上面设置的几个服务的端口 iptables -A INPUT -p udp --dport 10001:10004 -j ACCEPT
在新的发行版本中lockd服务端口不固定位,其他几个服务端口系统都已增加为预设为固件端口。具何查看/etc/sysconfig/nfs和/etc/services 文件,如下:
在centos7中查看/etc/sysconfig/nfs配置文件,可以找到如下部分
# Note: For new values to take effect the nfs-config service # has to be restarted with the following command: # systemctl restart nfs-config # # Optional arguments passed to in-kernel lockd #LOCKDARG= # TCP port rpc.lockd should listen on. #LOCKD_TCPPORT=32803 # UDP port rpc.lockd should listen on. #LOCKD_UDPPORT=32769
具体可以对比下centos6 版本中该文件的变化。同时,在/etc/services 中可以找到如下部分:
# cat /etc/services sunrpc 111/tcp portmapper rpcbind # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper rpcbind # RPC 4.0 portmapper UDP idmaps 1884/tcp # Internet Distance Map Svc idmaps 1884/udp # Internet Distance Map Svc nfs 2049/tcp nfsd shilp # Network File System nfs 2049/udp nfsd shilp # Network File System nfs 2049/sctp nfsd shilp # Network File System mountd 20048/tcp # NFS mount protocol mountd 20048/udp # NFS mount protocol
与centos6相比,这里将mountd服务的端口配置为了固定端口。所以在centos7下防火墙相应的配置如下:
firewall-cmd --permanent --add-service=mountd firewall-cmd --permanent --add-service=nfs firewall-cmd --permanent --add-service=rpc-bind 或 firewall-cmd --permanent --add-service=nfs --add-service=rpc-bind --add-service=mountd firewall-cmd --reload firewall-cmd --permanent --remove-service=nfs --remove-service=rpc-bind --remove-service=mountd //删除相应的端口
不过在centos7上也可以在/etc/sysconfig/nfs 文件中配置和/etc/services中预设值不相同的端口,例如最上面提到的连续端口10001-10004,相应的在防火墙中,可以如下配置:
firewall-cmd --add-port=10001-10004/udp firewall-cmd --add-port=10001-10004/tcp
注:由于lockd 服务为非必须服务,我在这里并未在防火墙中例中。如有需要,也可以将其在/etc/sysconfig/nfs设置为固定端口后,在firewalld 中例外。
二、win7下挂载NFS共享
1、win7开启nfs挂载
这里以win7为例,打开控制面板---找到程序和功能---在windows功能中勾选NFS客户端和管理工具即可。勾选后需重启生效。
LINXU服务端需要注意的是,在firewalld中必须将 rpcbind、nfs、mountd三个服务都配置例外,只例外前两个时win7挂载时会报错如下(在linux客户端挂载中,经测试只将前两个服务例外即可。不过规范起见,还是建议将三个服务都例外):
#未在firewalld中例外mountd服务时 C:\Users\Administrator>showmount -e 192.168.1.200 RPC: 远程系统错误RPC: 端口映射器故障 - RPC: 已超时。 #在firewalld中例外mountd服务后 C:\Users\Administrator>showmount -e 192.168.1.200 导出列表在 192.168.1.200: /nfs 192.168.1.0/24
2、win7下挂载方法
挂载方法有如下两种:
mount 192.168.1.200:/nfs x:
mount \\192.168.1.200\nfs x:
挂载完成后就可以像操作本地盘一样操作远程共享目录了。
3、写权限问题
如果在LINUX服务端中未对共享的目录/nfs 设置为777权限或设置属主为nfsnobody:nfsnobody 时,win7挂载后默认是没有写的权限的(虽然在服务端设置的是rw权限)。mount查看后,发现默认挂载的uid和gid是-2 ,如下:
解决方法:让Win7在挂载NFS的时候将UID和GID改成0,打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\ClientForNFS\CurrentVersion\Default,增加两项:AnonymousUid,AnonymousGid ,并将其值设置为0 。如下图:
修改完注册表,重新启动计算机,重新mount(再使用mount查看会发现uid和gid变成了0),就能在win7下对nfs文件系统进行读写操作了。
三、windows提供NFS服务
在win2008 的服务里集成有NFS服务,所以NFS目前已经不再是Linux的专利。而在桌面版中没有该服务,不过在winxp时代,微软发布过一个sfu 软件包,可以让xp提供NFS服务,由于该包很古老的一个产物,未在win7在验证其适用性。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux
, 权限
, 文件
, 系统
, 配置
端口
nfs 挂载、linux nfs 挂载、nfs开机自动挂载、windows 挂载nfs、查看nfs 挂载列表,以便于您获取更多的相关知识。