Loading... <h3><span style="font-size: 16px">一、NFS的相关概念</span></h3> <p><span style="font-size: 14px"> NFS(Network File System)即网络文件系统的缩写,由Sun公司研发,其目的是为了解决网络文件共享的问题。用户可以实现像挂载本地文件系统一样挂载NFS服务器的共享目录;其具有配置简单、使用高效的特点,但只能在Linux系统使用,不能跨平台使用。</span></p> <p><span style="font-size: 14px"> NFS服务占用2049端口,但其对于不同的功能使用小于1024的随机端口来传输数据,但如果是随机端口客户端如何知晓要访问哪个端口呢?这就要借助于RPC协议了。</span></p> <p><span style="font-size: 14px"> RPC(Remote Procedure Call)即远程过程调用,其作用是向客户端告知NFS的端口信息;NFS服务启动时会主动向RPC注册所使用的端口,而RPC使用111端口来响应客户端的请求,所以客户端可以借助于RPC来完成NFS的访问。</span></p> <h3><span style="font-size: 16px">二、NFS文件访问权限</span></h3> <p><span style="font-size: 14px"> NFS服务本身没有身份验证的功能,权限是遵循共享目录在NFS服务器上的权限设置,而且只识别UID和GID。假如现在有一个共享的目录share其属主、属组及权限信息如下:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-63.png" title="1435053871234378.png" alt="1.png" /></p> <p><span style="font-size: 14px"> 用户和组为mysql,但当客户端访问此目录时,NFS是判定访问者的uid是否为400,如果uid相符,那么访问者就有可能拥有与mysql用户相同的权限,这还要取决于/share设置共享时所分配的权限;如果访问者的uid对应了NFS服务器上的另一个用户,则访问者就对应拥有other权限,但是否能够完全对应用other权限也要取决于\share的共享权限;如果访问者的uid恰好在NFS服务器上不存在,则服务器用自动将其压缩成为匿名用户,其uid为65534,而CentOS将其显示为nfsnobody。</span></p> <p><span style="font-size: 14px"> 由于在绝大部分Linux系统中root用户的uid为0,也就是说客户端可以轻易的获得NFS的root权限来访问共享目录,这样是极不安全的,所以NFS默认用将root的身份压缩成匿名用户。</span></p> <h3><span style="font-size: 16px">三、NFS服务端的配置</span></h3> <p><span style="font-size: 14px"> 1、安装NFS服务</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-69.png" title="1435098373133945.png" alt="2.png" /></p> <p><span style="font-size: 14px"> 在安装nfs-utils的同时会安装rpcbind程序。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-88.png" title="1435098492595025.png" alt="3.png" /></p> <p><span style="font-size: 14px"> 2、配置NFS服务</span></p> <p><span style="font-size: 14px"> NFS服务使用/etc/exports配置文件进行设置,其语法格式如下:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-65.png" title="1435098926715067.png" alt="4.png" /></p> <p><span style="font-size: 14px"> /share:表示共享的文件系统; </span></p> <p><span style="font-size: 14px"> 192.168.2.0/24:允许连接共享文件系统的客户端;</span></p> <p><span style="font-size: 14px"> (rw):客户端对于共享文件系统所拥有的权限;</span></p> <p><span style="font-size: 14px"> *.test.com(ro):表示test.com为后缀的主机都可以对/share目录有只读的权限;</span></p> <p><span style="font-size: 14px"> 客户端的设置方式:</span></p> <p><span style="font-size: 14px"> (1)IP地址,如192.168.2.10;</span></p> <p><span style="font-size: 14px"> (2)网络地址,如192.168.2.0/24,或192.168.2.0/255.255.255.0;</span></p> <p><span style="font-size: 14px"> (3)主机名,如client.test.com,也可以使用通配符,“*”或“?”。</span></p> <p><span style="font-size: 14px"> 常用权限参数:</span></p> <p><span style="font-size: 14px"> rw:可读可写;</span></p> <p><span style="font-size: 14px"> ro:只读;</span></p> <p><span style="font-size: 14px"> root_squash:将root用户压缩成为匿名用户(默认选项);</span></p> <p><span style="font-size: 14px"> no_root_squash:访问共享目录时保持root用户身份;</span></p> <p><span style="font-size: 14px"> all_squash:将所有访问NFS的用户身份全部压缩成为匿名用户;</span></p> <p><span style="font-size: 14px"> sync:将数据同步写入到内存和硬盘中;</span></p> <p><span style="font-size: 14px"> async:将数据暂存于内存中。</span></p> <p><span style="font-size: 14px"> anonuid:指定匿名访问用户的UID;</span></p> <p><span style="font-size: 14px"> anongid:指定匿名访问用户组的GID。</span></p> <p><span style="font-size: 14px"> 更多的参数可自行man exports来进行查阅。</span></p> <h3><span style="font-size: 16px">四、启动NFS服务</span></h3> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-44.png" title="1435101154132934.png" alt="5.png" /><span style="font-size: 14px"> 查看NFS开启的端口信息:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-45.png" title="1435101490525780.png" alt="6.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-91.png" title="1435101494443624.png" alt="7.png" /></p> <p><span style="font-size: 14px"> NFS服务本身启动在2049端口,rpcbind启动在111端口。</span></p> <p><span style="font-size: 14px"> 可以使用rpcinfo命令来查看rpc的相关信息,其格式如下:</span></p> <p><span style="font-size: 14px"> rpc [option] [IP|hostname]</span></p> <p><span style="font-size: 14px"> option:</span></p> <p><span style="font-size: 14px"> -p:显示所有的port与program信息。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161241-60.png" title="1435101883425721.png" alt="8.png" /></p> <h3><span style="font-size: 16px">五、NFS的查看命令</span></h3> <p><span style="font-size: 14px"> 下面来介绍两个经常用到的查看命令。</span></p> <p><span style="font-size: 14px"> (1)showmount命令</span></p> <p><span style="font-size: 14px"> 格式:showmount [option] [IP|hostname]</span></p> <p><span style="font-size: 14px"> option:</span></p> <p><span style="font-size: 14px"> -a:显示当前主机与客户端的NFS连接共享的状态;</span></p> <p><span style="font-size: 14px"> -e:显示某台主机的/etc/exports所共享的目录信息。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161242-88.png" title="1435102497105800.png" alt="9.png" /></p> <p><span style="font-size: 14px"> (2)exportfs命令</span></p> <p><span style="font-size: 14px"> 格式:exportfs [option]</span></p> <p><span style="font-size: 14px"> option:</span></p> <p><span style="font-size: 14px"> -a:全部挂载(或卸载)/etc/exports文件中的设置;</span></p> <p><span style="font-size: 14px"> -r:重新挂载/etc/exports中的设置;</span></p> <p><span style="font-size: 14px"> -u:卸载某一目录;</span></p> <p><span style="font-size: 14px"> -v:将命令输出显示到屏幕。</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161242-32.png" title="1435102795129837.png" alt="10.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703161242-58.png" title="1435102800323433.png" alt="11.png" /></p> <h3><span style="font-size: 16px">六、NFS客户端设置</span></h3> <p><span style="font-size: 14px"> (1)手动挂载NFS共享目录</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161242-40.png" title="1435104280209615.png" alt="11.png" /></p> <p><span style="font-size: 14px"> (2)开机自动挂载NFS共享目录</span></p> <p><span style="font-size: 14px"> 1)/etc/fstab</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161242-81.png" title="1435104699115118.png" alt="12.png" /></p> <p><span style="font-size: 14px"> _netdev:此选项表示在NFS服务器宕机时,也不会影响本地系统的启动。 </span></p> <p><span style="font-size: 14px"> 2)/etc/rc.d/rc.local</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161242-26.png" title="1435109306583530.png" alt="13.png" /></p> <p><span style="font-size: 14px"> 3)使用autofs</span></p> <p><span style="font-size: 14px"> 使用autofs可以实现按需挂载,当用户访问共享目录时,目录才会被自动挂载上,过一段时间没有使用又会被自动卸载。</span></p> <p><span style="font-size: 14px"> 安装autofs服务:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161242-11.png" title="1435112462280027.png" alt="15.png" /></p> <p><span style="font-size: 14px"> 配置主配置文件/etc/auto.master:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161243-49.png" title="1435112552879726.png" alt="16.png" /></p> <p><span style="font-size: 14px"> 定义/etc/auto.nfs文件,此文件中指时挂载信息即可:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161243-52.png" title="1435112635600263.png" alt="17.png" /></p> <p><span style="font-size: 14px"> 注意本地的挂载目录/auto/nfs不需要事先建立,autofs会自动建立。</span></p> <p><span style="font-size: 14px"> 启动autofs服务:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161243-10.png" title="1435112767102453.png" alt="16.png" /></p> <p><span style="font-size: 14px"> 验证:直接切换到/auto/nfs目录中;</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161243-15.png" title="1435112885118810.png" alt="17.png" /></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信