在Linux操作系统下搭建NFS服务器的过程中,最重要的配置文件可能就是 /etc/exports 了。这个文件定义了NFS客户端可以访问NFS服务器的哪些目录。
英文 export是导出的意思,当NFS服务提供目录给其它计算机访问的时候,我们就说它“导出”了这些目录。
我们来看看 /etc/exports 配置文件的写法示例:
/var/games *.exapmle.com(rw,insecure)
/pub admin.exapmle.com(rw) 192.168.1.0/24(ro,insecure,all_squash)
这里每一行“导出”一个目录,每行的第一个字段就是该目录在服务器上的绝对路径。
后面的字段用空格隔开,可以是本地可解析的主机名,也可以是IP地址或域名。表示允许来自该范围内的主机作为客户端访问。
紧随其后的英文括号内是一些选项参数,多个选项之间用逗号隔开,请注意主机和选项这个字段中没有任何空格。
另外,还可以增加更多的字段给更多主机授权,比如示例中的 /pub 行。
常用的选项参数有如下:
选项 | 描述 |
---|---|
ro | 只读权限访问,这是默认的权限 |
rw | 读写权限 |
async | 异步,写入数据时,先返回请求,将数据写入到内存缓存。然后由NFS server自身的写缓存机制统一写如磁盘。此参数可以提高NFS的性能,但提高了丢失数据的风险。 |
sync | 同步,写入数据时,数据同步写入到NFS Server的磁盘后才会返回完成 |
secure | 请求只能通过1024以内的端口发起(客户端) |
insecure | 允许通过大于1024的端口发起请求 |
root_squash | 压缩root权限,让客户端的root也只具备默认指定的权限,一般是nfsnobody用户的权限,这是默认值 |
no_root_squash | 不压缩root权限,这样客户端root连接NFS导出目录将具有服务器root的访问权限,不安全 |
all_squash | 压缩所有客户端的权限,也只具备指定的权限(nfsnobody) |
no_all_squash | 默认值,不压缩普通用户访问的权限,按UID映射为本地用户(重要) |
anonuid=??? | 指定UID,压缩权限后将使用该用户ID映射的用户权限 |
anongid=??? | 指定GID,压缩权限后将使用该组ID映射的组权限 |
上面的参数成对出现,两两关联记忆可能更方便。export文件修改后,使用 exportfs -av 或 exportfs -rv 命令均可让其中的条目和参数立即生效。
exportfs -r 选项可以在重新导出时,同步 /var/lib/nfs/etab 中的信息。该文件是NFS 配置的完整参数设定的文件,内容示例:
cat /var/lib/nfs/etab
/var/games 192.168.56.0/24(rw,sync,wdelay,hide,nocrossmnt,insecure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,root_squash,no_all_squash)