NFS需要RPC协议的协助。

RPC主要负责认证以及令牌发放。RPC的组件有rpc.mountd rpc.lockd rpc.statd

注意一个问题:

如果在NFS客户端有个用户centos(id=1001),它通过NFS协议挂载了一个远端路径,centos在NFS目录中创建了一个文件。当远端服务器上也有个用户linux(id=1001)时,那么linux对NFS路径下的文件也拥有与centos用户相同的权限。

还有个一问题:

如果本地有root用户(nfs客户端),那么它就会对nfs路径做任何事情,这样就太危险了。NFS有个机制:root_squash,将NFS本地(nfs客户端)root用户降级,降级为nfsnobody。这样客户端本地的root就没有太大的权限了。对于第一个问题,也有一个all_squash机制,将nfs客户端用户降级,避免与nfs服务端用户(有相同UID)拥相同的权限。

NFS程序

图片.png

NFS服务运行脚本

图片.png

监听端口

图片.png

启动NFS服务的时候会消耗较长的时间。因为他要连带启动其他服务

图片.png

通过这个截图可以发现,没有nfs的进程,而多了很多RPC的进程,这个是因为nfs是一个内核级程序,不对应单独的进程。

NFS的配置文件

nfs的配置文件有两种写法:1、/etc/exports 直接编写该文件 2、/etc/exports.d/xxx.exports

这两种写法可以并存

配置文件的目的就是说明有哪些目录是需要向外共享的

NFS配置文件的格式

/nfs-dir                    ip(export opt1,opt2) ip(opt1,opt2)

允许挂载的目录        允许挂载的客户端IP地址

客户端可以是指定IP,还可以是IP/PREFIX *代表任意主机

选项

root_squash 压缩root用户权限 默认

no_root_squash 不压缩root用户权限 危险

all_squash 压缩所有用户权限

no_all_squash 不压缩所有用户权限

anonuid and anongid 将NFS客户端映射到本地指定UID和GID

压缩永不权限主要是防止两个主机上的用户ID相同

exportfs

用来维护NFS文件系统,如果NFS配置文件修改了,不能重启NFS服务。需要使用这个命令来使配置文件生效。

配置NFS

1、添加NFS配置文件内容

图片.png

2、在没有exportfs之前的测试

图片.png

没有共享路径

3、exportfs 使NFS配置文件生效

图片.png

4、再测试exportfs的输出

图片.png

5、客户端挂载NFS

图片.png

图片.png

既然已经是rw权限了,为什么不能创建文件呢?因为root_squash是默认选项,它降低了客户端root用户的权限。

图片.png

我临时在服务端修改下nfs的权限

图片.png

图片.png

客户端就不报错了

6、使用第二个方式编写NFS配置文件

图片.png

后缀一定不能错。

文件名就是共享路径的名字

7、更新下共享目录

图片.png

8、在客户端查看共享路径有没有增加

图片.png