数日間、私はLDAP統合に取り組んできました。さて、必要なほとんどすべてを構成した後、私はこの最後の壁を思いつきました:LDAPサーバーから取得したセカンダリグループを使用する必要性。
動作:
[root@sr-servicesLin ~]# id hmr
uid=2956(hmr) gid=10000(ldapusers) groups=10000(ldapusers)
[root@sr-servicesLin ~]# getent group repo
repo:*:25958:
[root@sr-servicesLin ~]# groups hmr
hmr : ldapusers
リポジトリグループのコンテンツ(LDAPグループです):
[root@sr-dns ~]# ldapsearch -x -H ldaps://ldap.eibind.iss -b "dc=eibind,dc=iss" "(&(objectclass=posixGroup)(cn=repo)(gidNumber=*))"
# extended LDIF
#
# LDAPv3
# base <dc=eibind,dc=iss> with scope subtree
# filter: (&(objectclass=posixGroup)(cn=repo)(gidNumber=*))
# requesting: ALL
#
# repo, Groups, eibind.iss
dn: cn=repo,ou=Groups,dc=eibind,dc=iss
objectClass: posixGroup
objectClass: top
cn: repo
memberUid: hmr
memberUid: jcontreras
memberUid: hectoriss
gidNumber: 25958
# search result
search: 2
result: 0 Success
シナリオ:
OS:Centos 6.7
パッケージ:
・sslで実行されているldap
・sssdがインストールされました
・nss-pam-ldapd
問題は:
id
コマンドを使用すると、すべてのユーザーのセカンダリグループを取得するのではなく、プライマリグループ(LDAPから取得されるため、接続があります)のみを取得します。
メインの設定ファイルを貼り付けます。すべてを正しい場所に置いたと思います。サイト間をサーフィンして、サーバーから必要なすべてのデータを「解析」するためにldap
とsss
を構成するなど、sssdとnsswitchを同時に構成することはお勧めしません。サーバーの混乱などの可能性があります。それにもかかわらず、私はデータソースとしてldapとsssを書きました。
nsswitch.conf
#
# /etc/nsswitch.conf
#
passwd: files ldap sss
shadow: files ldap sss
group: files ldap sss
#hosts: db files nisplus nis dns
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files ldap sss
netgroup: files ldap sss
publickey: nisplus
automount: files ldap sss
aliases: files ldap nisplus
ご覧のとおり、passwd、shadow、およびgroupsについてldapおよびsss(sssd)に問い合わせています。この設定と組み合わせると、sssd.confファイルもあります。これは次のとおりです。
sssd.conf
[sssd]
config_file_version = 2
services = nss, pam, autofs
domains = default
[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd
[pam]
[domain/default]
ldap_tls_reqcert = allow
auth_provider = ldap
ldap_schema = rfc2307bis
krb5_realm = eibind.iss
ldap_search_base = dc=eibind,dc=iss
ldap_group_member = uniqueMember
id_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
ldap_uri = ldaps://ldap.eibind.iss/
#ldap_user_object_class = user
#ldap_group_object_class = group
#ldap_group_search_base = OU=Groups,DC=eibind,DC=iss
#ldap_group_search_scope = one
#ldap_group_object_class = group
ldap_chpass_uri = ldaps://ldap.eibind.iss/
krb5_kdcip = ldap.eibind.iss
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/cacerts
entry_cache_timeout = 600
ldap_network_timeout = 3
krb5_server = ldap.eibind.iss
autofs_provider = ldap
[autofs]
ここでは、ldap_schema = rfc2307bis
とldap_group_member = uniqueMember
を使用していることがわかります。
ネット上でldap_schema = rfc2307bis
をldap_schema = rfc2307
に変更する必要があることがわかったので、それでも機能しないと言います。
また、以前に試したが成功しなかったコメント行がいくつかあります。
最後に、nslcd.confを貼り付けます。ここでは、このチュートリアルに従いました: https://arthurdejong.org/nss-pam-ldapd/setup なので、設定ファイルはそのままで、次の行が追加されています。
# This comment prevents repeated auto-migration of settings.
uri ldap://ldap.eibind.iss/
base dc=eibind,dc=iss
uid nslcd
gid nslcd
私は何か、いくつかの値、いくつかの愚かな設定を見逃している必要があります。おそらく私はこれを見て約3〜4日を費やしているので、どんな助けでも非常に感謝しています。
前もって感謝します。
私は混乱しています、あなたのグループはRFC2307である「memberuid:$ username」を使用しています、それでなぜあなたの設定はrfc2307bisとuniqueMemberを指定しないのですか?
Rfc2307(デフォルト)を使用することを提案します。それが機能しない場合は、デバッグを開始して、LDAPサーバーに対してどのようなクエリが実行されるかを確認します。
デフォルトを置き換える場合:
ldap_schema = rfc2307
と
ldap_schema = rfc2307bis
sssd.conf
ファイルでは、 SSSD FAQ の指示に従う必要があります。
SSSDは、RFC 2307、RFC 2307bis、およびIPAの3つのLDAPスキーマタイプをサポートします(最後は、memberOfバックリンクを含むRFC 2307bisの拡張です)。
デフォルトでは、SSSDはより一般的なRFC2307スキーマを使用します。 RFC2307とRFC2307bisの違いは、グループメンバーシップがLDAPサーバーに格納される方法です。 RFC 2307サーバーでは、グループメンバーは、メンバーであるユーザーの名前を含む複数値属性
memberuid
として格納されます。 RFC2307bisサーバーでは、グループメンバーは、このグループのメンバーであるユーザーまたはグループのDNを含む複数値の属性メンバー(または場合によってはuniqueMember
)として格納されます。 RFC2307bisを使用すると、ネストされたグループも維持できます。したがって、この状況が発生したときに最初に試すことは、
ldap_schema = rfc2307bis
を設定し、/var/lib/sss/db/cache_DOMAINNAME.ldb
を削除して、SSSDを再起動することです。それでも機能しない場合は、ldap_group_member = uniqueMember
を追加し、キャッシュを削除して、もう一度再起動してください。それでも問題が解決しない場合は、バグを報告するときが来ました。