我正在从libpam-ldap到libpam-ldapd。我从 LDAP 收集次要组时遇到了一些麻烦。
在libpam-ldap,我的文件上有这个/etc/ldap.conf
:
nss_schema rfc2307bis nss_base_passwd ou=人员,ou=CITIUS,dc=inv,dc=usc,dc=es nss_base_shadow ou=人员,ou=CITIUS,dc=inv,dc=usc,dc=es nss_base_group ou=组,ou=CITIUS,dc=inv,dc=usc,dc=es nss_map_attribute uniqueMember 成员
存在映射是因为我使用的groupOfNames
是 而不是groupOfUniqueNames
LDAP 类来表示组,所以命名成员的属性是用member
而不是 命名的uniqueMember
。
现在,我想使用libpam-ldapd但我无法让它工作。这是我的相关部分/etc/nslcd.conf
:
基本密码 ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es 基本影子 ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es 基础组 ou=Groups,ou=CITIUS,dc=inv,dc=usc,dc=es 映射组 uniqueMember 成员
当用户通过身份验证时,这是来自 nslcd 的调试输出:
nslcd:[8b4567]调试:来自 pid=12090 uid=0 gid=0 的连接 nslcd:[8b4567]调试:nslcd_passwd_byuid(4004) nslcd:[8b4567] 调试:myldap_search(base="ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es", filter="(&(objectClass=posixAccount)(uidNumber=4004))") nslcd:[8b4567]调试:ldap_initialize(ldap://172.16.54.31/) nslcd:[8b4567]调试:ldap_set_rebind_proc() nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3) nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_DEREF,0) nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_TIMELIMIT,10) nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_TIMEOUT,10) nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,10) nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON) nslcd:[8b4567]调试:ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON) nslcd:[8b4567]调试:ldap_simple_bind_s(“uid=ubuntu,ou=Applications,ou=CITIUS,dc=inv,dc=usc,dc=es”,“*****”)(uri=“ldap://172.16.54.31/”) nslcd:[8b4567] 连接到 LDAP 服务器 ldap://172.16.54.31/ nslcd:[8b4567] DEBUG:ldap_result():结果结束 nslcd:[7b23c6]调试:来自 pid=15906 uid=0 gid=2000 的连接 nslcd:[7b23c6]调试:nslcd_pam_authc(“jorge.suarez”,“”,“su”,“***”) nslcd:[7b23c6] 调试:myldap_search(base="ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es", filter="(&(objectClass=posixAccount)(uid=jorge.suarez))") nslcd:[7b23c6]调试:ldap_initialize(ldap://172.16.54.31/) nslcd:[7b23c6]调试:ldap_set_rebind_proc() nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_DEREF,0) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_TIMELIMIT,10) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_TIMEOUT,10) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,10) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON) nslcd:[7b23c6] 调试:ldap_simple_bind_s(“uid=ubuntu,ou=Applications,ou=CITIUS,dc=inv,dc=usc,dc=es”,“*****”)(uri=“ldap://172.16.54.31/”) nslcd:[7b23c6] 连接到 LDAP 服务器 ldap://172.16.54.31/ nslcd:[7b23c6]调试:ldap_initialize(ldap://172.16.54.31/) nslcd:[7b23c6]调试:ldap_set_rebind_proc() nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_DEREF,0) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_TIMELIMIT,10) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_TIMEOUT,10) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,10) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON) nslcd:[7b23c6]调试:ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON) nslcd:[7b23c6] 调试:ldap_simple_bind_s(“uid=jorge.suarez,ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es”,“*****”)(uri=“ldap://172.16.54.31/”) nslcd:[7b23c6] 连接到 LDAP 服务器 ldap://172.16.54.31/ nslcd:[7b23c6] 调试:myldap_search(base="uid=jorge.suarez,ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es",filter="(objectClass=posixAccount)") nslcd:[7b23c6]调试:ldap_unbind() nslcd:[3c9869] 调试:来自 pid=15906 uid=0 gid=2000 的连接 nslcd:[3c9869]调试:nslcd_pam_sess_o(“jorge.suarez”,“uid=jorge.suarez,ou=People,ou=CITIUS,dc=inv,dc=usc,dc=es”,“su”,“/dev/pts/7”,“”,“jorge.suarez”)
在我看来,它甚至不会尝试寻找群组。我做错了什么?我看不到任何与我的问题相关的信息文档。我可能不明白该map
选项是如何工作的。
答案1
我认为该map group
参数需要与相应的参数相关联filter group
。以下是我使用它连接到 Active Directory 的方法:
filter passwd (&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=Linux-SA,OU=Groups,DC=global,DC=example,DC=com)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
map passwd uid sAMAccountName
map passwd homeDirectory unixHomeDirectory
map passwd gecos displayName
map passwd loginShell "/bin/bash"
filter shadow (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map shadow uid sAMAccountName
map shadow shadowLastChange pwdLastSet
filter group (&(objectClass=group)(gidNumber=*))
map group uniqueMember member