LDAP は補助/セカンダリ ユーザー グループをどのように処理しますか?

LDAP は補助/セカンダリ ユーザー グループをどのように処理しますか?

LDAP 経由で認証するように Apache を構成することに関する同様の質問を見たことがありますが、この基本的な質問はまだ私を混乱させています。

私のセットアップでは、同じプライマリ GID を持つユーザーを作成し、その後、ユーザーをさまざまな (補助/セカンダリ) グループに追加しました。これらのユーザー アカウントをテストしましたが、ほとんどの場合、すべて正常に動作しています。補助グループ メンバーシップに基づく権限が機能しています。パッケージを使用してsmbldap-toolsユーザーとグループを構成し、具体的には、smbldap-usermod -G +NEW_GROUP userユーザーを補助グループに追加しました。

そうすると、getent groupそれらの補足グループとそのメンバーが表示されます。いいですね。

補助グループの 1 つに対する LDAP エントリを見ると、すべてのユーザーが予想どおりにリストされていることがわかります。

しかし、各ユーザーの LDAP エントリを見ると、gidNumberプライマリ グループに対応するものだけがリストされています。つまり、各ユーザーの LDAP エントリにはプライマリ グループのみがリストされており、セカンダリ グループについては何も記載されていません。

Samba/LDAP (smbldap-tools を使用) は補助グループ/セカンダリ グループをどのように処理しますか?

さらに、補足グループのメンバーを識別するための検索フィルターをどのように作成すればよいでしょうか?

答え1

LDAP は単なる情報のディレクトリです。その情報がどのように保存され、取得されるかはアプリケーション次第です。この場合、POSIX ユーザーとグループは /etc/passwd ファイルと /etc/group ファイルをモデルにしています。各ユーザー エントリには、そのプライマリ グループの gid がリストされます。各グループには、そのメンバーがすべてリストされます (通常、プライマリ グループとしてリストされているメンバーは除きます)。

Samba および LDAP にユーザーとグループの情報を保存するさまざまな nss プラグインはすべて、ログイン時にユーザーがメンバーになっているグループを検索します。グループ メンバーシップの検索を高速化するには、memberUid 属性にインデックスを付ける必要があります。特定のユーザー アカウントの場合、検索フィルターは次のようになります。

(&(objectclass=posixGroup)(memberUid=$user))

特定のグループ内のユーザーを表示したい場合は、次のように検索します。

(&(objectclass=posixGroup)(cn=$group))

これは、すべてのグループが posixGroup オブジェクトクラスであることを前提としています。

答え2

私はOpenLDAPの熱心なユーザーではありませんが、これがActive Directory環境であれば、各ユーザーアカウントオブジェクトにある「memberOf」属性を使用します。OpenLDAPの世界では、メンバーオーバーレイあなたが探しているものを実現するでしょう。この質問これを実行するために知っておくべきことを説明します。

関連情報