11.2.14. ドメインオプション: ユーザー名形式の設定

SSSD が実行する主要なアクションの一つは、リモート ID プロバイダーにおけるローカルシステムユーザーの ID へのマッピングです。SSSD はユーザー名とドメインバックエンド名の組み合わせを使ってログイン ID を作成します。
SSSD は、ユーザーが異なるドメインに属している限り、同一のユーザー名を持つ異なるユーザーを認識できます。例えば、SSSD は、ldap.example.comドメインの jsmithldap.otherexample.comドメインの jsmith の両方を問題なく認証できます。
完全なユーザー名の構築に使用する名前の形式は、(オプションで) 設定の [sssd] セクションでユニバーサルに定義され、その後に各ドメインセクションで個別に定義することができます。
LDAP や Samba、Active Directory、Identity Management、ローカルシステムなど、異なるサービスのユーザー名は、すべて異なる形式を使用しています。SSSD がユーザー名/ドメイン名のセットの識別に使用する表現は、異なる形式の名前の解釈ができなくてはなりません。この表現は、re_expression パラメーターで設定します。
グローバルのデフォルトでは、このフィルターが name@domain 形式の名前を構築します。
(?P<name>[^@]+)@?(?P<domain>[^@]*$)

注記

正規の表現形式は、Python 構文です。
ドメインの部分は、ID プロバイダーのドメイン名に基づいて自動的に提供される場合があります。つまり、ユーザーは jsmith としてログインして、このユーザーが例えば LOCAL ドメインに属しているとすると、SSSD はこのユーザーのユーザー名を jsmith@LOCAL と解釈します。
しかし、別の ID プロバイダーは別の形式を使用している可能性があります。例えば Samba は非常に厳格な形式を使用しているので、ユーザー名は DOMAIN\username という形式に一致する必要があります。このため Samba の正規表現は以下のようになります。
(?P<domain>[^\\]*?)\\?(?P<name>[^\\]+$)
Active Directory のようなプロバイダーは、複数の異なる名前形式をサポートします。例えば Active Directory と Identity Management は、デフォルトで以下の 3 つの異なる形式をサポートします。
  • username
  • username@domain.name
  • DOMAIN\username
このため Active Directory および Identity Management プロバイダーのデフォルト値は、3 つすべての名前形式を可能にするより複雑なフィルターとなります。
(((?P<domain>[^\\]+)\\(?P<name>.+$))|((?P<name>[^@]+)@(?P<domain>.+$))|(^(?P<name>[^@\\]+)$))

注記

jsmith@ldap.example.com といった完全修飾名で情報を要求すると、適切なユーザーアカウントが常に返されます。異なるドメイン内でに同一ユーザー名を持つ複数のユーザーがいると、ユーザー名の特定だけだと、ルックアップの順番で最初にくるドメインのユーザーが返されます。
re_expression はユーザー名形式の設定方法で最も重要なものですが、別のアプリケーションで便利な 2 つのオプションもあります。
デフォルトのドメイン名の値

一つは re_expression で、全ユーザーが使用するデフォルトのドメイン名を設定します。(これはグローバル設定で、[sssd] セクションのみで利用可能です。) 複数のドメインが設定されている場合があるかもしれませんが、ユーザーデータを保存するのは 1 つだけで、他はホストやサービス ID に使用されます。デフォルトのドメイン名を設定することで、ユーザーはドメイン名を特定せずにユーザー名だけでログインできます。ドメイン名は、プライマリードメイン外のユーザーの場合に必要となります。

[sssd]
...
default_domain_suffix = USERS.EXAMPLE.COM
出力向けの完全名形式

もうひとつのパラメーターは re_expression に関連していますが、ユーザー名の 解釈 方法を定義するのではなく、特定された名前の 印刷 方法を定義します。full_name_format パラメーターは、ユーザー名とドメイン名 (が決められた後に) の表示方法を設定します。

full_name_format = %1$s@%2$s