系统管理指南:网络服务

使用 share 命令设置访问列表

在 Solaris 2.6 之前的发行版中,用于 share 命令的 -ro=-rw=-root= 选项的 accesslist 仅限于主机名或网络组名的列表。从 Solaris 2.6 发行版开始,访问列表还可以包括域名、子网号或拒绝访问的项。由于不必更改名称空间或维护较长的客户机列表,这些扩展简化了单一服务器上的文件访问控制。

以下命令为大多数系统提供只读访问权限,但是允许 roselilac 进行读写访问:


# share -F nfs -o ro,rw=rose:lilac /usr/src

在下一面的示例中,为 eng 网络组中的任意主机指定了只读访问权限。专门为客户机 rose 提供了读写访问权限。


# share -F nfs -o ro=eng,rw=rose /usr/src

注 –

不能同时指定不带参数的 rwro。如果未指定读写选项,则缺省情况下会为所有客户机指定读写访问权限。


要使多台客户机共享一个文件系统,必须在同一行中键入所有选项。针对同一对象多次调用 share 命令时,将仅“记住”最后一个运行的命令。以下命令为三台客户机系统提供读写访问权限,但是仅为 rosetulip 提供以 root 身份对文件系统的访问。


# share -F nfs -o rw=rose:lilac:tulip,root=rose:tulip /usr/src

共享使用多种验证机制的文件系统时,请确保在正确的安全模式之后包括 -ro-ro=-rw-rw=-root-window 选项。在本示例中,会为名为 eng 的网络组中的所有主机选择 UNIX 验证。这些主机只能以只读模式挂载文件系统。如果主机 tuliplilac 使用 Diffie-Hellman 验证,则它们可以以读写模式挂载文件系统。使用这些选项时,即使主机 tuliplilac 不使用 DH 验证,也可以以只读模式挂载文件系统。但是,必须在 eng 网络组中列出这些主机名。


# share -F nfs -o sec=dh,rw=tulip:lilac,sec=sys,ro=eng /usr/src

尽管 UNIX 验证为缺省安全模式,但如果使用 -sec 选项,也不会包括 UNIX 验证。因此,如果要将 UNIX 验证与其他任何验证机制一起使用,就必须包括 -sec=sys 选项。

通过在实际域名的前面添加一个点,可以在访问列表中使用 DNS 域名。点后面的字符串是域名,而不是全限定主机名。以下项允许 eng.example.com 域中的所有主机进行挂载:


# share -F nfs -o ro=.:.eng.example.com /export/share/man

在本示例中,单个 “.” 与通过 NIS 或 NIS+ 名称空间匹配的所有主机相匹配。 从这些名称服务中返回的结果中不包括域名。“.eng.example.com” 项与所有使用 DNS 进行名称空间解析的主机相匹配。DNS 始终返回全限定主机名。因此,如果使用了 DNS 和其他名称空间的组合,则需要较长的项。

通过在实际网络号或网络名的前面添加 “@”,可以在访问列表中使用子网号。此字符可将网络名与网络组或全限定主机名区分开来。必须在 /etc/networks、NIS 或 NIS+ 名称空间中标识子网。如果 192.168 子网已标识为 eng 网络,则以下各项具有相同效果:


# share -F nfs -o ro=@eng /export/share/man

# share -F nfs -o ro=@192.168 /export/share/man

# share -F nfs -o ro=@192.168.0.0 /export/share/man

最后两项表明无需包括完整的网络地址。

如果网络前缀不是按字节对齐,即与无类域间路由 (Classless Inter-Domain Routing, CIDR) 一样,则可以在命令行中明确指定掩码长度。掩码长度可通过在网络名或网络号后添加一条斜杠和地址前缀中的有效位数进行定义。例如:


# share -f nfs -o ro=@eng/17 /export/share/man

# share -F nfs -o ro=@192.168.0/17 /export/share/man

在上述示例中,“/17” 表示地址中的前 17 位要用作掩码。有关 CIDR 的其他信息,请查阅 RFC 1519。

另外,还可以通过在项的前面放置 “-” 来选择拒绝访问。请注意,各项是从左到右读取的。因此,必须将拒绝访问项放在应用了拒绝访问项的项之前:


# share -F nfs -o ro=-rose:.eng.example.com /export/share/man

本示例将允许对 eng.example.com 域中除了名为 rose 的主机之外的任何主机进行访问。