LDAP + Kerberosを使用してWindows2003R2のActiveDirectoryに対して認証しています。私のkrb5.confとldap.confは正しいようです(ネットで見つけたほとんどすべてのサンプルによると)。パスワードとsshキーの両方でホストにログインできます。 getent passwdを実行すると、すべてのldapユーザーアカウントがすべての重要な属性とともに一覧表示されます。 getent groupを実行すると、すべてのldapグループとそのgidが一覧表示されますが、グループメンバーは表示されません。いずれかのグループでldapsearchとfilterを実行すると、メンバーはすべて「member」属性でリストされます。したがって、データは取得のために存在し、適切に解析されていないだけです。 ldap.confで誤ったマッピングを使用しているように見えますが、表示されません。私はいくつかのバリエーションを試しましたが、すべて同じ結果が得られました。
これが私の現在のldap.confです:
Host <ad-Host1-ip> <ad-Host2-ip>
base dc=my,dc=full,dc=dn
uri ldap://<ad-Host1> ldap://<ad-Host2>
ldap_version 3
binddn <mybinddn>
bindpw <mybindpw>
scope sub
bind_policy hard
nss_reconnect_tries 3
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 8
nss_reconnect_maxconntries 3
nss_map_objectclass posixAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute uid sAMAccountName
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute cn cn
nss_map_attribute gecos displayName
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute uniqueMember member
pam_filter objectcategory=User
pam_login_attribute sAMAccountName
pam_member_attribute member
pam_password ad
キッカーは次のとおりです。この構成は、別のディストリビューションを持つ別のLinuxボックスで100%正常に機能します。切り替えを計画しているディストリビューションでは機能しません。古いボックスと一致するように、新しいボックスにpam_ldap
とnss_ldap
のバージョンをソースからインストールしました。これにより、このセットアップで発生していた別の問題が修正されました。
その他の関連情報は、元のADボックスがWindows 2003であったことです。ミラーがひどいハードウェアで死んだので、ミラーツリーにさらに2台の2003-R2サーバーを追加し、最終的に古い2003ボックスを削除しようとしています。新しいR2ボックスは、DCフォレストに正しく参加しているように見えます。
グループを機能させるには何をする必要がありますか?私は見つけることができたすべてのリソースを使い果たし、別の角度が必要です。どんな入力でも大歓迎です。
ステータスの更新、2009年7月31日
ADから完全な情報を取得するために設定ファイルを微調整することができました。パフォーマンスは素晴らしく、きびきびしています。 pam_ldap
とnss_ldap
の逆回転したコピーを、使用しているディストリビューションの現在のコピーに置き換えたので、標準のすぐに使用できるインストールに戻ります。これが私の現在の設定です:
Host <ad-Host1-ip> <ad-Host2-ip>
base dc=my,dc=full,dc=dn
uri ldap://<ad-Host1> ldap://<ad-Host2>
ldap_version 3
binddn <mybinddn>
bindpw <mybindpw>
scope sub
bind_policy soft
nss_reconnect_tries 3
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 8
nss_reconnect_maxconntries 3
nss_connect_policy oneshot
referrals no
nss_map_objectclass posixAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute uid sAMAccountName
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute cn cn
nss_map_attribute gecos displayName
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute uniqueMember member
pam_filter objectcategory=CN=Person,CN=Schema,CN=Configuration,DC=w2k,DC=cis,DC=ksu,DC=edu
pam_login_attribute sAMAccountName
pam_member_attribute member
pam_password ad
ssl off
tls_checkpeer no
sasl_secprops maxssf=0
残りの問題は、groups
コマンドを実行すると、サブスクライブされたすべてのグループが一覧表示されないことです。一部は(1つまたは2つ)ですが、すべてではありません。ファイルやプリンタへのアクセスなど、グループメンバーシップは引き続き尊重されます。 getent group foo
は、ユーザーがグループfooのメンバーであることを示しています。したがって、これはプレゼンテーションのバグのようであり、通常の操作を妨げることはありません。
また、グループがリストされていても、一部の(正確な数は特定していません)グループ検索が正しく解決されないようです。たとえば、「getent group bar
」を実行すると何も返されませんが、「getent group|grep bar
」または「getent group|grep <bar_gid>
」を実行すると、実際にリストされ、グループ名とgidが表示されていることがわかります。正しい。
これはまだLDAP検索またはマッピングエラーのように見えますが、それが何であるかを理解できません。私は週の初めよりもずっと近くにいますが、この最後の詳細を解決したいと思っています。
これは実際には非常に簡単に修正できます。ldap.confに以下を追加する必要があります。
nss_schema rfc2307bis
これは、CNだけでなくDNを持つグループを列挙するように指示します。また、2003R2 DC以降)を使用している限り、RFC2307ネイティブ属性(gecos、uidなど)を使用できることにも注意してください。
それは私が少し前に遭遇したのと同じケースかもしれません。 ADグループのメンバーが多すぎると、Linuxでそのようなエラーが発生しました(getentレベルのどこかまたはその直前-ldapsearchは正常に機能しました)。
より正確には、エラーは特定のメンバー数ではなく、「グループ行」(/ etc/groupからの行を考えてください)あたりの文字数が1023文字を超えていることに関するものです。なぜこの制限があるのか、なぜ1024なのかは調べませんでした。2つ目のグループを作成し、そこに過剰なメンバーを移動しました。