Ubuntu18.04LTS搭建NFS及配置详解(修改完善)

1.安装NFS服务:

服务器端:

sudo apt install nfs-kernel-server

Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第1张图片
服务器端:

sudo apt install portmap(如果安装上一个,可以不用执行此操作)

Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第2张图片
客户端:

sudo apt install nfs-common

Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第3张图片
2.修改NFS配置文件

1)配置portmap

sudo vim /etc/default/portmap

-i 127.0.0.1

2)配 置/etc/hosts.allow

$ sudo vim /etc/hosts.allow

Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第4张图片Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第5张图片
3)配置/etc/exports(NFS服务的主配置文件见末端)
NFS挂载目录及权限由/etc/exports文件定义。

$sudo vim /etc/exports

比如我要将将我的home目录中的/home/lin/NFSshare目录让192.168.66.*的IP共享, 则在该文件末尾添加下列语句:

      /home/lin/NFSshare  192.168.66.*(rw,sync,no_root_squash)

然后保存退出。
Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第6张图片
各段表达的意思如下,根据实际进行修改

/home   :共享的目录
*       :指定哪些用户可以访问
            *  所有可以ping同该主机的用户
            192.168.1.*  指定网段,在该网段中的用户可以挂载
            192.168.1.12 只有该用户能挂载
            (ro,sync,no_root_squash):  权限(权限参数详解看文章末端)
        ro : 只读
        rw : 读写
        sync :  同步
        no_root_squash: 不降低root用户的权限
其他选项man 5 exports 查看

4)重启nfs服务

$ sudo /etc/init.d/nfs-kernel-server restart

Ubuntu18.04LTS搭建NFS及配置详解(修改完善)_第7张图片

下面介绍客户端如何访问服务器

1、检查客户端和服务端的网络是否连通(ping命令)

ping + 主机IP

2、查看服务端的共享目录
客户端挂载:执行下面的指令就可以把NFS服务器(IP地址为192.168.1.45)共享出来的/home挂装到本地的/mnt/nfs/home目录下。
showmount -e nfs-serverip: 查看nfs服务器共享出来的资源

mount -t nfs 192.168.1.45:/home /mnt/nfs/home

showmount -e + 主机IP

showmount -e 192.168.1.93
Export list for 192.168.1.93:
/home *

3、将该目录挂载到本地

mount 192.168.1.93:/home  /mnt 

通过挂载点卸载

umount -v /mnt

4、访问

访问本地的mnt目录,就可访问服务端共享的目录了。
  ---------------------------------------------------------------------------------------------------------------
在NFS服务器搭建过程中,当我们在修改配置文件的时候,其中很重要的一环就是权限参数。
/etc/exprots中的权限参数主要有如下几个:

① rw : 该目录共享的权限是读写
  ro : 该目录共享的权限是只读
  但最终能不能读写还是与文件系统的权限和身份有关
  
② sync : 数据会同步写入到内存和硬盘中
  async : 数据会暂存于内存而不写入硬盘

③ no_root_squash : 开放客户端使用root使用来操作文件系统,也就是说让root写入的文件仍然具有root权限
  root_squash : 默认客户端的root用户被会压缩为nfsnobody,这样对服务器系统较有保障

④ all_squash : 不论登录NFS服务器的客户端用户身份是什么,默认都会被压缩为匿名用户(nobody或者nfsnobody)

⑤ anonuid : 这个值一般是结合all_squash一起使用的,它是指匿名用户中的UID的设置值,用这个anonuid可以自行设置UID的值,注意:这个UID必须要存在与/etc/passwd中。
  anongid : 组的GID。

NFS服务的主配置文件:
/etc/exports:
格式:[共享的目录] [主机名或IP(参数,参数)]
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

第一列:欲共享出去的目录,也就是想共享到网络中的文件系统;
第二列:可访问主机

192.168.152.13 指定IP地址的主机 
nfsclient.test.com 指定域名的主机 
192.168.1.0/24 指定网段中的所有主机 
*.test.com        指定域下的所有主机 
  • 所有主机
    第三列:共享参数
    下面是一些NFS共享的常用参数:
 ro                    只读访问 
 rw                   读写访问 
 sync                所有数据在请求时写入共享 
 async              NFS在写入数据前可以相应请求 
 secure             NFS通过1024以下的安全TCP/IP端口发送 
 insecure          NFS通过1024以上的端口发送 
 wdelay            如果多个用户要写入NFS目录,则归组写入(默认) 
 no_wdelay      如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
 Hide                在NFS共享目录中不共享其子目录 
 no_hide           共享NFS目录的子目录 
 subtree_check   如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
 no_subtree_check   和上面相对,不检查父目录权限 
 all_squash               共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
 no_all_squash         保留共享文件的UID和GID(默认) 
 root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认) 
 no_root_squas         root用户具有根目录的完全管理访问权限 
 anonuid=xxx            指定NFS服务器/etc/passwd文件中匿名用户的UID 
例如可以编辑/etc/exports为: 
/tmp     *(rw,no_root_squash) 
/home/public 192.168.0.*(rw)   *(ro) 
/home/test  192.168.0.100(rw) 

/home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)

你可能感兴趣的:(NFS)