Go to main content

Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.8.0

退出打印视图

更新时间: 2018 年 11 月
 
 

NFS 协议

此部分包含以下主题:

有关 NFS 协议的更多信息,请参见以下主题:

有关其他受支持协议的信息,请参见以下各节:

NFS 协议属性

每个共享资源都有特定于协议的属性,这些属性定义了不同的协议针对该共享资源的行为。可以为每个共享资源定义这些属性,也可以从共享资源的项目继承这些属性。下表显示了 NFS 协议属性和可能的值。

表 116  NFS 协议属性
属性
CLI 值
属性类型
说明
Share mode(共享模式)
off/rw/ro
继承
确定共享资源是只可用于读取、可用于读写,还是不可用于两者中的任何一个。请参见共享资源和项目协议
Disable setuid/setgid file creation(禁用 setuid/setgid 文件创建)
nosuid
继承
如果选择此选项,客户机将无法在设置了 setuid (S_ISUID) 和 setgid (S_ISGID) 位的情况下创建文件,也无法通过 chmod(2) 系统调用在现有文件上启用这些位。
Prevent clients from mounting subdirectories(防止客户机装载子目录)
nosub
继承
如果选择了此选项,将会阻止客户机直接挂载子目录。将强制它们挂载共享资源的根目录。注意:这只适用于 NFSv2 和 NFSv3 协议,不适用于 NFSv4.0 或 NFSv4.1。
Anonymous user mapping(匿名用户映射)
anon
继承
除非为特定客户机启用了 "root" 选项,否则,客户机上的 root 用户将被视为未知用户,且该用户对共享资源的文件的所有访问尝试将被视为具有此 uid 的用户的尝试。然后,将正常评估此文件的访问位和 ACL。
Character set(字符集)
有关可能的值,请参见字符集编码
继承
为所有客户机设置默认的字符集。
Security mode(安全模式)
sec=
有关可能值的列表,请参见安全模式
继承
为所有客户机设置安全模式。
Enforce reserved ports for system authentication(强制保留用于系统验证的端口)
resvport
继承
如果在共享资源或项目上设置了此属性并且启用了系统验证安全模式,则要求 NFS 客户机使用编号较小的(“保留的”)TCP 端口。一些 NFS 客户机(如 Oracle Solaris 和 Linux)默认情况下使用编号较小的 TCP 端口。其他客户机(如 Windows)可能需要配置。

NFS 共享模式的例外情况

通过设置客户机特定的共享模式或例外情况,可为客户机或客户机集合定义全局共享模式的例外情况。要限制特定客户机的访问,请将全局共享模式设置为 none,然后向逐级缩小的组授予逐级增大的访问权限。例如,可以创建一个共享资源,将其全局共享模式设置为 none(无),即拒绝所有客户机的访问;然后向一部分客户机授予只读访问权限。您还可以更进一步向更少的一部分客户机授予读写访问权限,最终,只有受信任的主机可能具有读写访问权限及 root 支持的访问权限。

客户机特定的共享模式优先于全局共享模式。系统会根据例外情况中指定的客户机特定的共享模式向客户机授予访问权限。如果未定义例外情况,将根据全局共享模式向客户机授予访问权限。

表 117  客户机类型
类型
CLI 前缀
说明
示例
Host(FQDN) or Netgroup(主机 (FQDN) 或网络组)
none
其 IP 地址解析为指定的全限定名称的单个客户机,或包含客户机的 IP 地址解析为的全限定名称的网络组。
caji.sf.example.com
DNS Domain(DNS 域)
.
其 IP 地址解析为以此后缀结尾的全限定名称的所有客户机。
sf.example.com
IPv4 子网
@
其 IP 地址位于指定的 IPv4 子网(以 CIDR 表示法表示)内的所有客户机。
192.0.2.254/22
IPv6 子网
@
其 IP 地址位于指定的 IPv6 子网(以 CIDR 表示法表示)内的所有客户机。
2001:db8:410:d43::/64

对于每个客户机或客户机集合,请指定客户机对共享资源有只读还是读-写权限。如果要设置 NFS 例外情况,还要指定客户机有 root 用户权限还是视作没有 root 用户权限的用户。

管理网络组

网络组可用于控制对 NFS 导出的访问权限。但是,网络组的管理可能很复杂。请考虑改用 IP 子网规则或 DNS 域规则。

如果使用网络组,则将通过 NIS 或 LDAP 解析它们,具体取决于启用了哪个服务。如果使用 LDAP,则每个网络组必须位于默认位置 ou=Netgroup,(Base DN),并且必须使用标准模式。

网络组条目的用户名组件通常不会影响 NFS;只有主机名有意义。网络组中包含的主机名必须是规范化的,如果使用 DNS 进行解析,则必须是全限定的。也就是说,NFS 子系统将尝试验证请求方客户机的 IP 地址是否可以解析为与指定的 FQDN,或与指定的网络组之一的某个成员匹配的规范化主机名。该匹配必须为严格匹配,包括所有域组件;否则,将不会匹配该例外并将尝试下一个例外。有关主机名解析的更多信息,请参见 DNS

从 2013.1.0 软件发行版开始,UNIX 客户机用户最多可以属于 1024 个组,而性能丝毫不减。在以前的发行版中,每个 UNIX 客户机用户最多可以属于 16 个组。

NFS 共享模式以及例外情况选项

在 CLI 中,所有 NFS 共享模式和例外都是通过针对 sharenfs 属性使用单个选项字符串指定的。此字符串是逗号分隔的值列表。作为针对 BUI 介绍的全局共享模式的对应体,它应以 rorwonoff 之一开头。

表 118  NFS 共享模式值(BUI 和 CLI)
BUI 共享模式值
CLI 共享模式值
说明
示例
off
禁用共享模式。
sharenfs=off
on
共享资源名称是数据集名称,且可供读写或仅可供读取(如果定义了 rwro NFS 例外情况)。对于所有其他客户机,将禁用共享模式。
sharenfs="on,ro=sf.example.com"
<resource name>
共享资源名称是资源名称,且可供读写或仅可供读取(如果定义了 rwro NFS 例外情况)。对于所有其他客户机,将禁用共享模式。
sharenfs="myshare,ro=sf.example.com"
Read/write(读取/写入)
on
共享资源名称是数据集名称,并且如果没有 NFS 例外情况,则可供所有客户机读写。
sharenfs=on
rw
共享资源名称是数据集名称,且可供所有客户机读写(为其定义了 ro 例外情况的客户机除外)。
sharenfs=rwsharenfs="rw,ro=sf.example.com"
<resource name>
共享资源名称是资源名称,并且如果没有 NFS 例外情况,则可供所有客户机读写。
sharenfs=myshare
<resource name>,rw
共享资源名称是资源名称,且可供所有客户机读写(为其定义了 ro 例外情况的客户机除外)。可以定义也可以不定义 NFS 例外情况。
sharenfs="myshare,rw"sharenfs="myshare,rw,ro=sf.example.com"
只读
ro
共享资源名称是数据集名称,且仅可供所有主机读取(为其定义了 rw 例外情况的主机除外)。
sharenfs="ro,rw=sf.example.com"
<resource name>,ro
共享资源名称是资源名称,且仅可供所有客户机读取(为其定义了 rw 例外情况的客户机除外)。可以定义也可以不定义 NFS 例外情况。
sharenfs="myshare,ro"sharenfs="myshare,ro,rw=sf.example.com"

以下示例将所有客户机的共享模式设置为只读。所有客户机上的 root 用户将如同普通 "nobody" 用户一样访问共享资源上的文件。

set sharenfs=ro

此外,还将附加 nosuidanon 中的其中一个选项或两者。因此,要将所有未知用户的映射定义为 uid 153762,您可以指定以下内容:

set sharenfs="ro,anon=153762"

注 -  包含 "=" 字符的 CLI 属性值必须加上引号。

可以通过附加 "option=collection" 格式的文本(其中 "option" 是 rorwroot 中的一个,定义将授予客户机集合的访问权限类型)来指定更多的 NFS 例外情况。客户机集合是由“客户机类型”表中的前缀字符,以及一个 DNS 主机名/域名或 CIDR 网络号指定的。例如,要授予对 sf.example.com 域中的所有主机的读写权限,并授予对 192.168.44.0/24 网络中的主机的 root 权限,您可以使用:

set sharenfs="ro,anon=153762,rw=.sf.example.com,root=@192.168.44.0/24"

注 -  此示例仅适用于 NFS 例外情况。

在任何可以使用单个全限定主机名的位置中都可以使用网络组名称。例如,您可以通过以下方式允许对 "engineering" 网络组进行读写访问:

set sharenfs="ro,rw=engineering"

NFS 协议字符集编码

通常情况下,不指定用于文件名的字符集编码。NFSv3 和 NFSv2 协议没有指定字符集。NFSv4.0 和 NFSv4.1 应该使用 UTF-8,但不是所有的客户机都如此,而且服务器并未实施此限制。如果为共享资源禁用了 "UTF-8 only" 选项,则在不知道文件名编码的情况下会将文件名按原样写入文件系统。这意味着只有使用相同编码的客户机才能解释这些文件名。不过,SMB 要求将文件名存储为 UTF-8,以便在服务器端可以解释它们。这使得无法在允许通过 SMB 进行访问的同时支持任意客户机编码。

要支持这样的配置,可以在共享资源范围内或以客户机为单位设置字符集编码。支持以下字符集编码:

cp932
euc-tw
iso8859-7
koi8-r
euc-cn
iso8859-1
iso8859-8
shift_jis
euc-jp
iso8859-2
iso8859-9
euc-jpms
iso8859-5
iso8859-13
euc-kr
iso8859-6
iso8859-15

默认行为是不指定字符集编码(直通)。BUI 允许通过标准例外列表机制选择字符集。在 CLI 中,每个字符集本身成为了具有一个或多个主机的选项,使用 "*" 表示共享资源范围内的设置。例如,以下示例:

hostname:shares default> set sharenfs="rw,euc-kr=*"

将以 "euc-kr" 作为默认编码来共享文件系统。以下示例:

hostname:shares default> set sharenfs="rw,euc-kr=host1.domain.com,euc-jp=host2.domain.com"

为 "host1" 和 "host2" 之外的所有客户机使用默认编码,这两台客户机分别使用 "euc-kr" 和 "euc-jp"。主机列表的格式遵循其他 CLI NFS 选项的格式。

请注意,某些 NFS 客户机无法正确支持备用语言环境;有关详细信息,请查阅 NFS 客户机文档。

NFS 协议安全模式

安全模式以共享资源为单位进行设置。以下列表介绍了 Kerberos 安全设置:

  • krb-通过 Kerberos V5 进行最终用户验证

  • krb5i-krb5 加完整性保护(数据包是防篡改的)

  • krb5p-krb5i 加隐私保护(数据包是防篡改而经过加密的)

可以通过附加 "option=mode" 格式(其中,optionsecmode 是安全设置)的文本来指定安全模式。例如:

hostname: shares default> set sharenfs="sec=krb5" 

注 -  包含 "=" 字符的 CLI 属性值必须加上引号。

Kerberos 类型的组合可以在安全模式设置中指定。组合安全模式允许客户机使用所列出的任一种 Kerberos 类型进行挂载,如下表中所示。

表 119  Kerberos 类型的组合
设置
说明
sys
System Authentication(系统验证)
krb5
仅限 Kerberos v5-客户机必须使用此风格进行挂载。
krb5:krb5i
Kerberos v5,带有完整性-客户机可以使用所列出的任何风格进行挂载。
krb5i
仅限 Kerberos v5 完整性-客户机必须使用此风格进行挂载。
krb5:krb5i:krb5p
Kerberos v5,带有完整性或隐私-客户机可以使用所列出的任何风格进行挂载。
krb5p
仅限 Kerberos v5 隐私-客户机可以使用此方式进行挂载。

保留端口

要为系统验证设置保留的端口,请按以下示例所示使用 resvport

set sharenfs="sec=sys,rw,resvport"

请注意,resvport 只能与系统验证安全模式 sec=sys 一起使用。