共用方式為


為 Azure NetApp Files 設定 NFSv4.1 識別碼網域

NFSv4 介紹識別碼驗證網域的概念。 Azure NetApp Files 會使用輸入值 defaultv4iddomain.com 作為驗證網域,而 NFS 用戶端會使用自己的設定來驗證想要存取這些磁碟區上檔案的使用者。 根據預設,NFS 用戶端會使用 DNS 網域名稱作為 NFSv4 識別碼網域。 您可以使用名為 idmapd.conf 的 NFSv4 設定檔來覆寫此設定。

如果 NFS 用戶端和 Azure NetApp Files 上的驗證網域設定不相符,可能會導致 NFSv4 使用者和群組對應,因而拒絕檔案存取。 發生這種情況時,不相符的使用者和群組會壓縮成 idmapd.conf 檔案中設定的使用者和群組 (通常是 nobody:99),且事件會記錄在用戶端上。

本文說明使用者/群組對應的預設行為,以及如何正確設定 NFS 用戶端以進行驗證並允許存取。 

使用者/群組對應預設行為

根用戶對應可以說明若 Azure NetApp Files 與 NFS 用戶端不相符時,會發生什麼情況。 應用程式的安裝程序通常需要使用根使用者。 Azure NetApp Files 可以設定為允許存取 root

在下列目錄清單範例中,使用者 root 會在 Linux用戶端上掛接磁碟區,該用戶端會使用其識別碼驗證網域的預設設定 localdomain,這與 Azure NetApp Files 的預設設定 defaultv4iddomain.com 不同。

Screenshot of file directory output.

在目錄的檔案清單中,file1 會顯示為對應至 nobody,而擁有者實際上應該為根用戶。

有兩種方式可以調整兩端的驗證網域:Azure NetApp Files 作為 NFS 伺服器和 Linux 作為 NFS 用戶端:

  1. 中央使用者管理:若已使用像 Active Directory 網域服務 (AD DS) 之類的中央使用者管理,可以將其 Linux 用戶端設定為使用 LDAP,並將 AD DS 中設定的網域設為驗證網域。 在伺服器端,您必須啟用 Azure NetApp Files 的 AD 網域服務,並建立支援 LDAP 的磁碟區。 支援 LDAP 的磁碟區會自動使用 AD DS 中設定的網域作為其驗證網域。

    如需有關此程序的詳細資訊,請參閱為 NFS 磁碟區啟用 Active Directory 網域服務 (AD DS) LDAP 驗證

  2. 手動設定 Linux 用戶端:如果您沒有為 Linux 用戶端使用中央使用者管理,可以手動設定 Linux 用戶端,使其與 Azure NetApp Files 非支援 LDAP 的磁碟區的預設驗證網域相符。

在本節中,我們將著重於如何設定 Linux 用戶端,以及如何變更所有非支援 LDAP 之磁碟區的 Azure NetApp Files 驗證網域。

在 Azure NetApp Files 上設定 NFSv4.1 識別碼網域

您可以使用 Azure 入口網站,為所有非 LDAP 磁碟區指定所需的 NFSv4.1 識別碼網域。 此設定適用於相同訂用帳戶和區域中所有 NetApp 帳戶的所有非 LDAP 磁碟區。 這不會影響相同 NetApp 訂用帳戶和區域中支援 LDAP 的磁碟區。

註冊功能

Azure NetApp Files 支援使用 Azure 入口網站為訂用帳戶中所有非 LDAP 磁碟區設定 NFSv4.1 識別碼網域。 此功能目前為預覽功能。 您需要在第一次使用之前註冊該功能。 註冊之後,此功能就會啟用並在背景中運作。

  1. 註冊功能

    Register-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFNFSV4IDDomain
    
  2. 檢查功能註冊的狀態:

    注意

    RegistrationState 在變更為 Registered 之前,可能處於 Registering 狀態最多達 60 分鐘。 等到狀態變為 Registered 之後再繼續。

    Get-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFNFSV4IDDomain
    

您也可以使用 Azure CLI 命令az feature registeraz feature show 來註冊此功能,並顯示註冊狀態。

步驟

  1. 在 Azure NetApp Files 訂用帳戶下,選取 [NFSv4.1 識別碼網域]

  2. 選取設定

  3. 若要使用預設網域 defaultv4iddomain.com,請選取 [使用預設 NFSv4 識別碼網域] 旁的方塊。 若要使用另一個網域,請取消核取文字輸入框,並提供 NFSv4.1 識別碼網域的名稱。

    Screenshot with field to set NFSv4 domain.

  4. 選取 [儲存]。

在 NFS 用戶端中設定 NFSv4.1 識別碼網域

  1. /etc/idmapd.conf編輯 NFS 用戶端上的檔案。
    取消註解行 #Domain (亦即將 # 從行移除),並將 localdomain 值變更如下:

    • 如果磁碟區沒有啟用 LDAP,可以透過指定 Domain = defaultv4iddomain.com 來使用預設網域 defaultv4iddomain.com,或指定 NFSv4.1 識別碼網域,如 Azure NetApp Files 中所設定
    • 若磁碟區已對 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 
    
  2. 卸載目前掛接的任何 NFS 磁碟區。

  3. 更新 /etc/idmapd.conf 檔案。

  4. 清除 NFS idmapper (nfsidmap -c) 的 Keyring。

  5. 視需要掛接 NFS 磁碟區。

    請參閱掛接適用於 Windows 或 Linux VM 的磁碟區

下列範例顯示產生的使用者/群組變更:

Screenshot that shows an example of the resulting user/group change.

如範例所示,使用者/群組現在已從 nobody 變更為 root

其他 (非根) 使用者和群組的行為

Azure NetApp Files 支援本機使用者和群組 (在 NFS 用戶端本機上建立,並以使用者和群組識別碼表示) 以及與 NFSv4.1 磁碟區中檔案或資料夾相關聯的對應所有權和權限。 然而,服務不會自動解決跨 NFS 用戶端對應本機使用者和群組的問題。 在一部主機上建立的使用者和群組不一定會存在於另一個 NFS 用戶端上 (或者使用不同的使用者和群組識別碼存在),因此在下面的範例中不會正確對應。

在下列範例中,Host1 有三個使用者帳戶 (testuser01testuser02testuser03):

Screenshot that shows that Host1 has three existing test user accounts.

Host2 上,沒有對應的使用者帳戶存在,但兩部主機上都掛接了相同的磁碟區:

Resulting configuration for NFSv4.1

若要解決此問題,請在 NFS 用戶端上建立遺漏的帳戶,或將 NFS 用戶端設定為使用 Azure NetApp Files 用於集中管理 UNIX 身分識別的 LDAP 伺服器。

下一步