linux nfs 修改权限,nfs服务权限配置

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服务的配置文件

d1eb5cba6673ac248d0d03a86f40ea29.png

文件的每一行定义一个共享目录;

/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设为所有用户只读权限访问

修改配置文件

5cb129d9afdbbd73e14c878e0259c767.png

重启服务

5e71a8bac72ab80fc015c0086cc49471.png

客户端验证

482d6e2c76f2d2fb1d8ad523a2e41e9a.png

992372cb39e9094dc3383c756b2b0b0d.png

验证是否可以写入

e39104a5cd0c8bbe650e5f780a4e71cf.png

(2) 将共享目录/share/webs2设置为192.168.80.0/24用户可以有读写权限

修改配置文件,添加一行;并创建共享目录

8575edbab72cefd20dcbdcfe3d1eb689.png

222cf10cc6a267bbf3fe7c2f0a5a60bc.png

客户端验证

ee91ca72f0f375d0a1846e6071479cda.png

这里为什么提示权限不够,我们明明给了可以写入的权限?

因为nfs服务配置中,为了安全考虑,服务默认会将访问的root用户权限压缩为nfsnobody用户权限。但是对于这个用户,在共享目录的权限是没有写入的。

a4c91c05da36d5020eb6ed3aae532316.png

所以当我们去写入一个文件的时候,对于这个目录来讲,用户nfsnobody用户没有写入的权限。所以才会出现错误提示。

解决方法:给目录的其他用户权限加上可以写入的权限(还有更好的方法,一会了解)

ca35934ef8857d7ea4a86f9acaf20914.png

82afb99685a69ec85d3b09ef1fc14dfd.png 

哎,这下创建成功。

(3) 综合分析no_root_squash | root_squash | all_squall权限带来的安全问题

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

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

修改配置文件添加no_root_squash权限

f742145ef1c99f92a90c2fd7ecec0610.png

清除共享文件写入权限

61d98bd083ad25b9f42c69649de4cff7.png

重启服务,客户端验证

be4bd17d5a757a5bdede918c5bb997b1.png

事实证明,目录没有写入权限仍然可以创建文件

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

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