Ubuntu16.04搭建NFS文件共享服务器的方法

  NFS

<强> 强即<强>网络文件系统(网络文件系统),是一种<强>分布式强文件系统协议,该协议允许客户端主机可以像访问本地文件系统一样通过网络访问服务器端文件,即可以将远程服务器文件直接<强> 山(<强>挂载)到本地的文件目录结构中进行访问。

  

<强>

  

服务器端需要安装<强> nfs-kernel-server 强软件包:

  

        $ sudo apt-get更新   $ sudo apt-get安装nfs-kernel-server      

  

默认情况下,NFS服务器上定义了某个共享目录,则该目录及其子目录下的所有文件都可被访问。

  

出于对安全的考虑,客户端任何需要<强>超级用户(即<强> 根用户,UID=0,GID=0)权限的文件操作都默认映射到UID=65534和GID=65534的用户,即Ubuntu系统中的人:nogroup。

  

例如客户端使用根权限在挂载的共享目录中创建文件时,该文件的<强>属主和<强>属组强自动变为<强>没有人:nogroup 强,而非<强>根:根

  

1。在服务器端创建共享目录

        sudo mkdir - p/var/nfs/gernel   sudo mkdir - p/var/nfs/public   sudo乔恩没人:nogroup/var/nfs/gernel      

2。修改出口文件

  

为了使NFS服务器定义的共享文件可被指定的客户端主机访问,需要在服务器端的<代码>/etc/出口文件中添加对应的记录。

  

该文件的格式如下:

  

<代码>目录主机(选项…)主机(选项)#评论关于<代码>/etc/出口文件的详细语法格式可参考<代码>男人出口

  

文件示例:

     /var/nfs/gernel 192.168.56.0/24 (rw,安全,同步,no_subtree_check)/var/nfs/public * (ro、没有安全感、同步、no_subtree_check)/home/starky 192.168.56.1 (rw、没有安全感、no_root_squash同步,no_subtree_check)      

第一条纪录表示<强> 192.168.56.0/24子网中的所有主机都可挂载nfs/<代码> var/gernel 目录并拥有读写(<强> rw )权限

  

第二条纪录表示<强>所有主机都可挂载nfs/<代码>/var/公共目录且拥有<强>只读(<强> ro )权限

  

第三条纪录表示客户端IP地址为192.168.56.1的主机可以挂载<代码>/home/starky 目录并拥有<强>读写权限,而且任何根权限(UID=0, GID=0)的文件操作都不默认映射给没人:nogroup,而保持属主(组)仍为根(<强> no_root_squash )

  

不选项:允许通过任意端口的远程访问

  

同步选项:强制NFS服务器在响应请求之前将文件的改动写入磁盘(强调客户端和服务端文件内容的一致性,但会降低文件操作的效率)。

  

no_subtree_check选项:禁用<强> subtree_check .subtree_check用来设置服务器在收到请求时,检查该文件是否在指定目录结构中依旧可用(该选项会在某些情况下发生错误:重命名某文件的同时,该文件在客户端打开)。

  

  

列出nfs服务器上的共享目录

        美元showmount - e 192.168.56.102   出口清单>   sudo mkdir - p/mnt/nfs/gernel   sudo mkdir - p/mnt/nfs/公众   sudo mkdir - p/mnt/nfs/starky      

挂载远程目录

  

        sudo 192.168.56.102山:/var/nfs/gernel/mnt/nfs/gernel   sudo 192.168.56.102山:/var/nfs/公共/mnt/nfs/公共   sudo 192.168.56.102山:/home/starky/mnt/nfs/starky      

<强>权限测试

  

如截图所示:

  

 Ubuntu16.04搭建NFS文件共享服务器的方法

  

nfs权限测试

  

NFS的权限设定基于Linux文件系统的权限管理,即客户端挂载远程共享目录后,会把它们当成本地磁盘目录一样对待,也是根据文件的属主(组)及其对应的权限设定来限制访问。

  

gernel目录的属主(组)为没有人:nogroup(65534:65534),所以虽然该目录为读写权限,非根用户无法执行新建操作。而根用户由于NFS默认的安全机制,会自动映射到没人:nogroup。

  

由于我在客户端和服务端都有一个名为starky的用户,且它们的UID: GID都为1000:1000,所以服务端的<代码>/home/starky 目录可以直接被客户端的starky用户访问。且由于<强> no_root_squash 选项,通过<强> sudo 强命令创建的文件其属主仍为根(而不会再映射为没人)。

  

Ubuntu16.04搭建NFS文件共享服务器的方法