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服务的配置文件 文件的每一行定义一个共享目录; /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设为所有用户只读权限访问 修改配置文件 重启服务 客户端验证 验证是否可以写入 (2) 将共享目录/share/webs2设置为192.168.80.0/24用户可以有读写权限 修改配置文件,添加一行;并创建共享目录 客户端验证 这里为什么提示权限不够,我们明明给了可以写入的权限? 因为nfs服务配置中,为了安全考虑,服务默认会将访问的root用户权限压缩为nfsnobody用户权限。但是对于这个用户,在共享目录的权限是没有写入的。 所以当我们去写入一个文件的时候,对于这个目录来讲,用户nfsnobody用户没有写入的权限。所以才会出现错误提示。 解决方法:给目录的其他用户权限加上可以写入的权限(还有更好的方法,一会了解) 哎,这下创建成功。 (3) 综合分析no_root_squash | root_squash | all_squall权限带来的安全问题

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

接下来表演一波,取消root_squash的权限,使用no_root_squash权限,即使共享目录没有写入的权限,我照样能够写入文件。 修改配置文件添加no_root_squash权限 清除共享文件写入权限 重启服务,客户端验证 事实证明,目录没有写入权限仍然可以创建文件 你说这和安不安全有什么区别吗?注意了,一般共享目录都会有写入权限,当然就可已删除。例如一个搞破坏的人拥有了这样的权限,直接把所有共享文件删了,那就凉凉了。 所以当我们设置一个nfs服务的时候,切记不能使用no_root_squash权限。最好能使用root_squash和all_squash权限。 All_squash权限是将所有的访问用户都压缩为nfsnobody用户权限。 当然出于对目录安全的考虑,我们可还可以将共享目录的所有者,所属组设为nfsnobody。 这样不管你是用什么用户访问,如果不被压缩为nfsnobody用户,是没有办法在这个用户下做任何操作。当然前提不要加入no_root_squash权限。