文件共享-NFS

NFS:网络文件系统(Network  File  System)。提供网络文件系统平台,需要借助RPC(远程过程调用)协议来发送文件传输的控制指令。

发布时间:1984年

公司:SUN公司。典型产品有JAVA。SUN公司2009年被Oracle公司收购


实验环境:实际操作以真实环境为准,下面是实验环境

客户机 client
服务器 server
w7或w10 :192.168.11.1 (虚拟网卡)centos 7.6 :192.168.11.11
centos 7.6 :192.168.11.12

NFS 软件:nfs-utils 、 rpcbind  

说明:如果是安装了centos桌面环境,这两个软件包都已经安装好了。如果是安装了centos最小环境,需要手动安装这两个软件包。


NFS的部署思路:(网络服务的部署通用思路)

1.关闭防火墙和linux安全功能,并查状态:

  systemctl  stop  firewalld    ;  setenforce  0

  systemctl  status  firewalld  ;  getenforce 

blob.png

  注:图中dead说明防火墙已关闭,Permissive说明selinux安全功能已关闭

2.查软件是否已安装,如果未安装就安装软件。

3.启动服务,并允许开机自动启动

4.设置共享目录,重新加载设置。

5.做本地(内测)访问测试,做异地(公测)访问测试。


NFS部署步骤:

一、关闭防火墙和linux安全功能,并查状态:

  systemctl  stop  firewalld    ;  setenforce  0

  systemctl  status  firewalld  ;  getenforce


二、安装 NFS 软件:

查是否已安装:rpm  -q  nfs-utils  rpcbind

安装:yum  install  -y  nfs-utils  rpcbind

查软件的文件列表:rpm  -ql  nfs-utils

查配置文件列表:rpm  -qc  nfs-utils


三、NFS 服务管理:

重启动服务:systemctl  restart  nfs  rpcbind

允许开启自动启动:systemctl  enable  nfs  rpcbind

查服务状态:systemctl  status  nfs  rpcbind

blob.png


四、共享需要的文件:

通过/etc/exports共享配置文件来实现。查man  exports来了解配置文件的格式。

exports配置文件语法如下:man  exports 查帮助中的EXAMPLE例子

共享目录的绝对路径         1号客户主机名或IP(共享选项)      n号客户主机名或IP(共享选项)

/usr                   *(ro) 192.168.11.13(rw)

/opt                   *(rw,no_root_squash)          192.168.11.0/24(rw)

blob.png

exportfs命令选项:man  exportfs

-r  重新共享所有目录

-a  打开或取消所有目录共享。

-v  输出详细信息。当共享或者取消共享时,显示在做什么。

-f  在“新”模式下,刷新内核共享表之外的任何东西。


解释(主要):

客户主机名或IP:

*号      表示任何IP的主机

主机名   可以指定客户机的主机名

192.168.11.0/24   表示允许192.168.11.0这个网段的所有主机访问共享


共享选项:

ro (常用选项)可读 ReadOnly

rw (常用选项)可读可写 read  +  write

sync   (常用选项)同步传输

async  (常用选项)异步传输

no_root_squash  (常用选项)不将root映射成nfsnobody匿名用户,即让root用自己的身份和权限访问共享

no_all_squash  (默认启用)不将所有用户映射成nfsnobody匿名用户,即让所有用户用自己的身份和权限访问共享

root_squash    将root映射成nfsnobody匿名用户(默认启用)

all_squash     将所有用户映射成nfsnobody匿名用户

anonuid    匿名用户的uid号

anongid    匿名用户的gid号


nfs的其他配置文件:(仅了解一下,无需修改)

cat  /var/lib/nfs/etab   记录nfs共享的完整设置选择,此文件的内容来源于/etc/exports文件。当重启nfs服务时,会自动更新etab文件内容。

blob.png


来一个简单练习体验一下NFS共享吧:通过nfs将/usr目录以只读方式共享,允许任何IP的主机来访问。

前提是完成了前面部署思路的前三步,即关闭了防火墙、selinux、安装了软件并重新启动软件和设为开机自启

vim  /etc/exports  

/usr   *(ro)

blob.png

:wq 保存退出


平滑重启(重加载)nfs服务:exportfs  -rav   或  systemctl  reload  nfs   {建议以后实际操作中改了服务的配置文件用 reload 平滑重启}  

本地(内测)查共享资源列表:showmount   -e  127.0.0.1

blob.png


在异地(公测)做挂在访问测试:

本地(内测)查共享资源列表:showmount   -e  192.168.11.11

创建挂载点:mkdir  -pv  /mynfs

挂载:mount  -t  nfs  192.168.11.11:/usr   /mynfs

查磁盘空间使用状态:df  -hT

blob.png


在Win7/10中访问NFS共享:

1.安装nfs客户端(client)程序。

    运行Win+R-->control控制面板-->程序-->打开或关闭windows功能-->NFS服务-->勾选“NFS客户端”-->确定。

2.运行Win+R-->cmd-->输入如下命令。

查共享资源列表:showmount  -e  192.168.11.11

挂载共享资源为K盘:mount  192.168.11.11:/usr   k:

打开共享:win+E--->双击K盘图标



showmount选项: man  showmount

-a或--all     以 host:dir 这样的格式来显示客户主机名和挂载点目录。

-d或--directories    仅显示被客户挂载的目录名。

-e或--exports        显示NFS服务器的输出清单。


最后补充一点:详解见下期的 vsftp 文件共享服务

文件共享权限要考虑的2个要素:

1.用户对目录自身的访问权限。

2.目录做共享时设置的访问权限。

警告:用户访问共享时想可读可写,必须是以上两个权限都为可读可写。