1、 查看系统是否已经安装了服务
Rpm -qa | grep nfs 
2、 启动服务,并且开机自动运行
Systemctl start nfs
Systemctl enabled nfs
3、 配置NFS服务
(1) 创建共享文件,并在问价加下创建一个文档
Mkdir /share/webs
Echo “this is nfs” > nfs.txt
(2) 配置nfs服务的配置文件

nfs服务权限配置


文件的每一行定义一个共享目录;
/share/webs这是需要共享的目录
192.168.80.0/24允许访问的客户端,这里表示整个网段的都可以访问,也可以指定单个地址,也可以用星号表示所有用户都可以访问。
(ro,sync)选项用于访问时候的权限,这里指可读权限,并且将数据同步到硬盘。
具体的权限包括以下几种:
Ro 只读权限
Rw读写权限
Sync数据同步写入内存硬盘
no_root_squash 访问共享目录时,用户如果是root权限,对共享目录也具有root权限(最好不要设置,增加服务安全隐患,稍后再提)
root_squash 如果访问共享目录是root的权限用户,对共享目录的权限会被压缩为nfsnobody用户的权
all_squash 不管你访问共享目录的用户是谁,都必须压缩为nfsnobody用户的权限
4、 下面通过实例来分析这几个权限
(1) 将共享目录/share/webs设为所有用户只读权限访问
修改配置文件

nfs服务权限配置


重启服务

nfs服务权限配置


客户端验证

nfs服务权限配置


nfs服务权限配置


验证是否可以写入

nfs服务权限配置


(2) 将共享目录/share/webs2设置为192.168.80.0/24用户可以有读写权限
修改配置文件,添加一行;并创建共享目录

nfs服务权限配置


nfs服务权限配置


客户端验证

nfs服务权限配置


这里为什么提示权限不够,我们明明给了可以写入的权限?
因为nfs服务配置中,为了安全考虑,服务默认会将访问的root用户权限压缩为nfsnobody用户权限。但是对于这个用户,在共享目录的权限是没有写入的。

nfs服务权限配置


所以当我们去写入一个文件的时候,对于这个目录来讲,用户nfsnobody用户没有写入的权限。所以才会出现错误提示。
解决方法:给目录的其他用户权限加上可以写入的权限(还有更好的方法,一会了解)

nfs服务权限配置


nfs服务权限配置

 
哎,这下创建成功。
(3) 综合分析no_root_squash | root_squash | all_squall权限带来的安全问题

回到我们在实例(2)中,出现权限不足的问题,那就是因为默认设置了root_squash权限,如果客户端root用户进行访问的时候,将root权限压缩为nfsnobody权限。

接下来表演一波,取消root_squash的权限,使用no_root_squash权限,即使共享目录没有写入的权限,我照样能够写入文件。
修改配置文件添加no_root_squash权限

nfs服务权限配置


清除共享文件写入权限

nfs服务权限配置


重启服务,客户端验证

nfs服务权限配置


事实证明,目录没有写入权限仍然可以创建文件
你说这和安不安全有什么区别吗?注意了,一般共享目录都会有写入权限,当然就可已删除。例如一个搞破坏的人拥有了这样的权限,直接把所有共享文件删了,那就凉凉了。

nfs服务权限配置

所以当我们设置一个nfs服务的时候,切记不能使用no_root_squash权限。最好能使用root_squash和all_squash权限。All_squash权限是将所有的访问用户都压缩为nfsnobody用户权限。当然出于对目录安全的考虑,我们可还可以将共享目录的所有者,所属组设为nfsnobody。这样不管你是用什么用户访问,如果不被压缩为nfsnobody用户,是没有办法在这个用户下做任何操作。当然前提不要加入no_root_squash权限。