1. $ cat /etc/exports
  2. /webdata *(sync,rw,all_squash)
  3. /tmp *(rw,no_root_squash)
  4. /home/share 192.168.1.*(rw,root_squash) *(ro)
  5. /opt/data 192.168.1.18(rw)
  6. /usr/local/doc *.domain.com(rw,anonuid=686,anongid=686)

➢共享资源路径:就是要共享出来的目录或者磁盘分区。例如,上面的/tmp、/home/share目录等,这些目录存在于NFSServer端,以供NFSClient挂载使用。➢主机地址:设定允许使用NFSServer共享资源的客户端主机地址,主机地址可以是主机名、域名、IP地址等,支持匹配。➢选项:可用的各个选项含义如下所述。✧ro:即为readonly,也就是客户端主机对共享资源仅仅有读权限。✧rw:即为readwrite,也就是客户端主机对共享资源有读、写权限。✧no_root_squash:信任客户端,根据用户UID进行判断,如果登录到NFS主机的用户是root,那么此用户就拥有对共享资源的最高权限。此参数很不安全,建议不要使用。

✧root_squash:系统预设值,当登录NFS主机的用户是root时,这个使用者的权限将被缩成为匿名使用者,也就是它的UID与GID都会变成nfsnobody身份,只有可读权限。例如,客户端使用者以(UID,GID)=(0,0)的身份使用共享目录时,其身份就被转换为(UID,GID)=(65534,65534),也就是nfsnobody这个用户身份。系统以此为预设值,显然是为了安全考虑。✧all_squash:不管登录NFS主机的是什么用户,都会将共享文件的UID和GID映射为匿名用户nfsnobody。✧no_all_squash:系统预设值,保留共享文件的UID和GID默认权限。也就是客户端用户的UID和GID与服务端共享文件UID和GID相同时,才有对共享文件的读写权限。这种选项保证了共享文件的用户和组权限不会改变。✧anonuid:将登录NFS主机的用户都设定成指定的UID,此UID必须存在于NFSServer端/etc/passwd中。✧anongid:与anonuid含义类似,但是变成GID了,即用户组ID。✧sync:资料同步写入磁盘中。默认选择。✧async:资料会先暂时存放在内存中,不会直接写入硬盘。

在启动NFS服务后,可能又修改了/etc/exports文件,此时不需要重启NFS服务,利用exportfs命令即可让修改生效。exportfs命令用法如下:

  1. exportfs [-aruv] [Host:/path]

➢a:全部mount或者unmount/etc/exports中的内容。➢r:重新mount/etc/exports中分享出来的目录。➢u:umount目录。➢v:在export的时候,将详细的信息输出到屏幕上。➢Host:NFS客户端主机地址。

➢/path:指定NFSServer上需要共享出来的目录的完整路径。例如,重新mount文件/etc/exports中分享出来的目录,显示mount过程,操作如下:

  1. # exportfs -rv
  2. exporting 192.168.50.41:/data/html
  3. exporting 192.168.50.41:/data/uploadfiles
  4. # exportfs
  5. /data/uploadfiles
  6. 192.168.50.41
  7. /data/html 192.168.50.41

客户端挂载

  1. mount -t nfs Hostname:/directory /mountpoint

➢Hostname:用来指定NFSServer的地址,可以是IP地址或主机名。➢/directory:表示NFSServer共享出来的目录资源。➢/mountpoint:表示客户端主机指定的挂载点。通常是一个空目录。

安全设定

➢合理设定/etc/exports中共享出去的目录权限,最好使用anonuid、anongid等选项使NFS客户端权限降到最低,不建议使用no_root_squash选项,除非客户端是可信任的。➢根据需要,合理设定最佳的NFSD的COPY数目。Linux中的NFSD的COPY数目是通过/etc/sysconfig/nfs这个启动文件中RPCNFSDCOUNT参数进行设置的,默认是8个NFSD,对于这个参数的设置要根据需要NFS客户端的数目来进行设定。例如,修改RPCNFSDCOUNT=16,

  1. systemctl restart nfs-config
  2. systemctl restart nfs