xdays

NFS文件共享服务器

基础概念

运行流程

NFS主要用于Linux系统间的文件共享,其方便之处在于client只要权限足够可以直接通过挂载的方式使用server端的目录,通过网络读写数据。NFS是通过几个独立的daemons来实现的,例如其中rpc.nfsd用于验证身份,rpc.mountd负责管理文件系统,rpc.lockd用于锁定文件防止写冲突,rpc.statd用于检查一致性。他们启动后选取小于1024的随机端口来监听,这就造成客户端无法了解服务端监听哪些端口的问题?所以NFS的运行依赖于portmap,portmap启动后会监听111端口,NFS各个服务器启动后需要向portmap注册自己的监听端口,这样当客户端要请求响应服务时先向portmap请求响应服务的端口,然后再去请求响应的服务

权限问题

分以下几种情况讨论:

  • 当client与server有完全相同的帐号和组(包括UID),client在server端拥有相应帐号的权限
  • 当client与server的用户UID相同时,client可以拥有以服务器端相同UID的权限,这可能会造成问题
  • 当server上并不存在client的UID,server端会把client的用户看作是一个匿名帐号,如Centos用nfsnobody
  • 当client以root用户访问server,默认server会把root用户改成匿名用户的权限

这样看来一个client用户要对NFS文件系统有些的权限要满足以下三个条件:

  • 通过NFS本身的验证
  • 在NFS配置中对文件系统有些的权限
  • 实际文件系统对响应的用户有些的权限

安装

一般系统默认都会安装,用如下命令查询下是否安装

rpm -q nfs-utils portmap

如果没有安装,yum安装

yum install -y ...