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程序
NFS服务运行脚本
监听端口
启动NFS服务的时候会消耗较长的时间。因为他要连带启动其他服务
通过这个截图可以发现,没有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配置文件内容
2、在没有exportfs之前的测试
没有共享路径
3、exportfs 使NFS配置文件生效
4、再测试exportfs的输出
5、客户端挂载NFS
既然已经是rw权限了,为什么不能创建文件呢?因为root_squash是默认选项,它降低了客户端root用户的权限。
我临时在服务端修改下nfs的权限
客户端就不报错了
6、使用第二个方式编写NFS配置文件
后缀一定不能错。
文件名就是共享路径的名字
7、更新下共享目录
8、在客户端查看共享路径有没有增加