web-dev-qa-db-ja.com

idコマンドはセカンダリグループを表示していません

数日間、私は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から取得されるため、接続があります)のみを取得します。

メインの設定ファイルを貼り付けます。すべてを正しい場所に置いたと思います。サイト間をサーフィンして、サーバーから必要なすべてのデータを「解析」するためにldapsssを構成するなど、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 = rfc2307bisldap_group_member = uniqueMemberを使用していることがわかります。

ネット上でldap_schema = rfc2307bisldap_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日を費やしているので、どんな助けでも非常に感謝しています。

前もって感謝します。

3
ITPro Guy

私は混乱しています、あなたのグループはRFC2307である「memberuid:$ username」を使用しています、それでなぜあなたの設定はrfc2307bisとuniqueMemberを指定しないのですか?

Rfc2307(デフォルト)を使用することを提案します。それが機能しない場合は、デバッグを開始して、LDAPサーバーに対してどのようなクエリが実行されるかを確認します。

2
jhrozek

デフォルトを置き換える場合:

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を追加し、キャッシュを削除して、もう一度再起動してください。それでも問題が解決しない場合は、バグを報告するときが来ました。

1
dawud