现在我们将看看如何配置 NFS 服务器。具体来说,我们将看看如何告诉 NFS 服务器应该提供哪些文件系统以供挂载,以及控制客户端访问文件系统的各种参数。服务器决定允许对服务器文件进行何种类型的访问。这个/etc/exports文件列出了服务器将为客户端挂载和使用的文件系统。
默认情况下,rpc.mountd 禁止所有目录挂载,这是一种相当合理的态度。如果您希望允许一个或多个主机 NFS 挂载目录,您必须导出它,即在exports文件中指定它。一个示例文件可能如下所示
# exports file for vlager /home vale(rw) vstout(rw) vlight(rw) /usr/X11R6 vale(ro) vstout(ro) vlight(ro) /usr/TeX vale(ro) vstout(ro) vlight(ro) / vale(rw,no_root_squash) /home/ftp (ro) |
每一行定义一个目录以及允许挂载它的主机。主机名通常是完全限定域名,但也可能包含 * 和 ? 通配符,它们的行为方式与 Bourne shell 中的行为方式相同。例如,lab*.foo.com匹配 lab01.foo.com 以及 laboratory.foo.com。主机也可以使用 IP 地址范围来指定,格式如下地址/子网掩码。 如果没有给出主机名,就像/home/ftp前面示例中的目录一样,任何主机都匹配并被允许挂载该目录。
当针对exports文件检查客户端主机时,rpx.mountd 使用gethostbyaddr调用来查找客户端的主机名。对于 DNS,此调用返回客户端的规范主机名,因此您必须确保不要在exports中使用别名。在 NIS 环境中,返回的名称是来自 hosts 数据库的第一个匹配项,在既没有 DNS 也没有 NIS 的情况下,返回的名称是在hosts文件中找到的与客户端地址匹配的第一个主机名。
主机名后面可以跟一个可选的逗号分隔的标志列表,用括号括起来。这些标志可以采用的一些值是
此标志坚持要求请求必须从保留的源端口发出,即小于 1024 的端口。默认情况下设置此标志。
此标志反转 secure 标志的效果。
此标志使 NFS 挂载为只读。默认情况下启用此标志。
此选项将文件层次结构挂载为读写。
此安全功能拒绝指定主机上的超级用户任何特殊访问权限,方法是将客户端上 uid 0 的请求映射到服务器上 uid 65534(即 -2)。此 uid 应与用户 nobody 关联。
不映射来自 uid 0 的请求。默认情况下启用此选项,因此超级用户对系统导出的目录具有超级用户访问权限。
此选项将绝对符号链接(链接内容以斜杠开头)转换为相对链接。仅当挂载主机的整个文件系统时,此选项才有意义;否则,某些链接可能指向任何位置,或者更糟糕的是,指向它们永远不应该指向的文件。默认情况下启用此选项。
此选项使所有符号链接保持原样(Sun 提供的 NFS 服务器的正常行为)。
此选项告诉服务器假设客户端使用与服务器相同的 uid 和 gid。默认情况下启用此选项。
此选项告诉 NFS 服务器假设客户端和服务器不共享相同的 uid/gid 空间。rpc.nfsd 然后通过查询客户端的 rpc.ugidd 守护进程来构建一个在客户端和服务器之间映射 ID 的列表。
此选项允许您指定包含 uid 和 gid 静态映射的文件名。例如,map_static=/etc/nfs/vlight.map将指定/etc/nfs/vlight.map文件作为 uid/gid 映射。映射文件的语法在exports(5)手册页中描述。
此选项使 NIS 服务器执行 uid 和 gid 映射。
这些选项允许您指定匿名帐户的 uid 和 gid。如果您导出了一个卷用于公共挂载,这将非常有用。
解析exports文件中的任何错误都会在 rpc.nfsd 或 rpc.mountd 启动时,报告给 syslogd 的 daemon facility,级别为 notice。
请注意,主机名是通过反向映射从客户端的 IP 地址获得的,因此必须正确配置解析器。如果您使用 BIND 并且非常注重安全,则应在您的host.conf文件中启用欺骗检查。我们在 第 6 章 中讨论这些主题。