你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure NetApp 文件配置 NFSv4.1 ID 域
NFSv4 引入了 ID 身份验证域的概念。 Azure NetApp Files 使用条目值 defaultv4iddomain.com
作为身份验证域,NFS 客户端使用其自己的配置来对想要访问这些卷上的文件的用户进行身份验证。 默认情况下,NFS 客户端将使用 DNS 域名作为 NFSv4 ID 域。 可以使用名为 idmapd.conf
的 NFSv4 配置文件替代此设置。
如果 NFS 客户端和 Azure NetApp Files 上的身份验证域设置不匹配,则文件访问可能会被拒绝,因为 NFSv4 用户和组映射可能会失败。 当发生这种情况时,不匹配的用户和组将会压缩 idmapd.conf
文件中配置的用户和组(通常为 nobody:99),并且在客户端上记录事件。
本文介绍用户/组映射的默认行为以及如何正确配置 NFS 客户端以进行正确的身份验证并允许访问。
用户/组映射的默认行为
根用户映射可以说明如果 Azure NetApp 文件和 NFS 客户端之间不匹配会发生什么情况。 应用程序的安装过程经常需要使用 root 用户。 可以配置 Azure NetApp 文件以允许 root
访问。
在以下目录列表示例中,用户 root
在 Linux 客户端上装载一个卷,该客户端使用其默认配置 localdomain
作为 ID 身份验证域,这与 Azure NetApp 文件的默认 defaultv4iddomain.com
配置不同。
在目录中的文件列表中,file1
显示为映射到 nobody
,但它应该由 root 用户拥有。
有两种方法可以调整两端的身份验证域:Azure NetApp 文件作为 NFS 服务器,Linux 作为 NFS 客户端:
中心用户管理:如果你已使用中心用户管理,例如 Active Directory 域服务 (AD DS),则可以配置其 Linux 客户端以使用 LDAP,并将 AD DS 中配置的域设置为身份验证域。 在服务器端,必须为 Azure NetApp 文件启用 AD 域服务并创建启用 LDAP 的卷。 启用 LDAP 的卷自动使用 AD DS 中配置的域作为其身份验证域。
有关此过程的详细信息,请参阅为 NFS 卷启用 Active Directory 域服务 (AD DS) LDAP 身份验证。
手动配置 Linux 客户端:如果没有对 Linux 客户端使用中心用户管理,则可以手动配置 Linux 客户端,以匹配未启用 LDAP 的卷的 Azure NetApp 文件的默认身份验证域。
本部分重点介绍如何配置 Linux 客户端以及如何更改所有未启用 LDAP 的卷的 Azure NetApp 文件身份验证域。
在 Azure NetApp 文件上配置 NFSv4.1 ID 域
可以使用 Azure 门户为所有非 LDAP 卷指定所需的 NFSv4.1 ID 域。 此设置适用于同一订阅和区域内所有 NetApp 帐户的所有非 LDAP 卷。 它不会影响同一 NetApp 订阅和区域中启用 LDAP 的卷。
注册功能
Azure NetApp 文件支持使用 Azure 门户为订阅中的所有非 LDAP 卷设置 NFSv4.1 ID 域。 此功能目前以预览版提供。 首次使用此功能之前,你需要注册此功能。 注册后,即可在后台启用并使用该功能。
注册功能
Register-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFNFSV4IDDomain
检查功能注册的状态:
注意
RegistrationState 可能会处于
Registering
状态长达 60 分钟,然后才更改为Registered
状态。 请等到状态变为Registered
后再继续。Get-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFNFSV4IDDomain
此外,Azure CLI 命令 az feature register
和 az feature show
分别可用于注册功能和显示注册状态。
步骤
在 Azure NetApp 文件订阅下,选择“NFSv4.1 ID 域”。
选择“配置” 。
若要使用默认域
defaultv4iddomain.com
,请选中“使用默认 NFSv4 ID 域”旁边的框。 若要使用其他域,请取消选中文本框并提供 NFSv4.1 ID 域的名称。选择“保存”。
在 NFS 客户端中配置 NFSv4.1 ID 域
在 NFS 客户端上编辑
/etc/idmapd.conf
文件。
取消注释行#Domain
(即,从行中删除#
),并将值localdomain
更改如下:- 如果卷未启用 LDAP,请通过指定
Domain = defaultv4iddomain.com
使用默认域defaultv4iddomain.com
,或指定 Azure NetApp 文件中配置的 NFSv4.1 ID 域。 - 如果该卷已启用 LDAP,请将
Domain
设置为在 NetApp 帐户的 Active Directory 连接中配置的域。 例如,如果contoso.com
是 NetApp 帐户中配置的域,则设置Domain = contoso.com
。
以下示例显示了更改之前的
/etc/idmapd.conf
初始配置:[General] Verbosity = O Pipefs—Directory = /run/rpc_pipefs # set your own domain here, if it differs from FQDN minus hostname # Domain = localdomain [Mapping] Nobody-User = nobody Nobody-Group = nogroup
以下示例显示了默认域
defaultv4iddomain.com
的非 LDAP NFSv4.1 卷的更新配置:[General] Verbosity = O Pipefs—Directory = /run/rpc_pipefs # set your own domain here, if it differs from FQDN minus hostname Domain = defaultv4iddomain.com [Mapping] Nobody-User = nobody Nobody-Group = nogroup
以下示例显示了“已启用 LDAP”NFSv4.1 卷的已更新配置。 在本例中,
contoso.com
是 NetApp 帐户中配置的域:[General] Verbosity = O Pipefs—Directory = /run/rpc_pipefs # set your own domain here, if it differs from FQDN minus hostname Domain = contoso.com [Mapping] Nobody-User = nobody Nobody-Group = nogroup
- 如果卷未启用 LDAP,请通过指定
卸载任何当前装载的 NFS 卷。
更新
/etc/idmapd.conf
文件。清除 NFS
idmapper
的密钥环 (nfsidmap -c
)。根据需要装载 NFS 卷。
以下示例显示生成的用户/组更改:
如示例所示,用户/组现在已从 nobody
更改为 root
。
其他(非 root)用户和组的行为
Azure NetApp 文件支持本地用户和组(在 NFS 客户端本地创建并由用户和组 ID 表示)以及与 NFSv4.1 卷中的文件或文件夹相关的相应所有权和权限。 但是,该服务不会自动解决跨 NFS 客户端的本地用户和组的映射。 在一个主机上创建的用户和组可能存在于另一个 NFS 客户端上,也可能不存在(或者以不同的用户和组 ID 存在),因此无法正确映射,如以下示例所示。
在以下示例中,Host1
有三个用户帐户(testuser01
、testuser02
、testuser03
):
在 Host2
上,不存在相应的用户帐户,但两台主机上都装载了相同的卷:
若要解决此问题,请在 NFS 客户端上创建缺少的帐户,或将 NFS 客户端配置为使用 Azure NetApp 文件用于集中管理 UNIX 标识的 LDAP 服务器。