OpenLDAP 서버가 있습니다.
@(#) $OpenLDAP: slapd 2.4.23 (Aug 8 2012 16:29:21)
내 구성에는 다음과 같은 그룹이 있습니다.
ldapsearch -x -b 'cn=groupname,ou=UnixShell,ou=Services,o=example,c=ru'
# extended LDIF
#
# LDAPv3
# base <cn=groupname,ou=UnixShell,ou=Services,o=example,c=ru> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# groupname, UnixShell, Services, example, ru
dn: cn=groupname,ou=UnixShell,ou=Services,o=example,c=ru
cn: groupname
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: cn=Name Second,ou=Sysadmins,ou=SoftwareDevelopment,ou=IT,ou=Accounts,o=example,c=ru
# search result
search: 2
result: 0 Success
및 사용자
# ldapsearch -x -b 'cn=Name Second,ou=Sysadmins,ou=SoftwareDevelopment,ou=IT,ou=Accounts,o=example,c=ru'
# extended LDIF
#
# LDAPv3
# base <cn=Name Second,ou=Sysadmins,ou=SoftwareDevelopment,ou=IT,ou=Accounts,o=example,c=ru> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# Name Second, Sysadmins, SoftwareDevelopment, IT, Accounts, example, ru
dn: cn=Name Second,ou=Sysadmins,ou=SoftwareDevelopment,ou=IT,ou=Accounts,o=
example,c=ru
homeDirectory: /home/user
loginShell: /bin/bash
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowLastChange: 15361
shadowMax: 99999
shadowMin: 0
shadowWarning: 7
uid: user
uidNumber: 7000
cn: Name Second
gidNumber: 702
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
오랫동안 내 클라이언트 서버(CentOS 6.*)에서 LDAP 인증을 사용하고 있었지만 한 번은 6.4 분기로 업그레이드할 때 구성이 손상되었습니다. 이제 시스템은 기본적으로 SSSD를 사용하기 때문입니다.
pam_ldap에서
pam_groupdn cn=groupname,ou=UnixShell,ou=Services,o=example,c=ru
pam_member_attribute uniquemember
하지만 이제 sssd.conf에서는 필터가 작동하지 않습니다.
access_provider = ldap
ldap_access_filter = memberOf=cn=groupname,ou=UnixShell,ou=Services,o=example,c=ru
내가 뭘 잘못했나요? SSH를 통해 로그인하면 내 기록을 찾을 수 없습니다. "su - user"를 사용하여 로컬로 작동합니다.
sssd 로그 오류
(Thu Mar 28 12:44:43 2013) [sssd[be[default]]] [sdap_access_filter_get_access_done] (0x0100): User [user] was not found with the specified filter. Denying access.
나는 이것을 사용하여 다음을 설정합니다.
authconfig --enablemkhomedir --updateall --enablesssd --enablesssdauth --enableldap --enableldapauth --disablenis --disablekrb5 --disablecachecreds --disablecache --ldaploadcacert=$certurl"
CentOS 버전 6.4(최종 버전)
! ! ! 아무것도 수동으로 변경하지 말고 시스템 유틸리티만 변경하십시오!
# cat /etc/sssd/sssd.conf
[domain/default]
ldap_uri = ldaps://ldap02.example.ru
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_id_use_start_tls = True
cache_credentials = False
ldap_search_base = o=example,c=ru
krb5_realm = EXAMPLE.COM
krb5_server = kerberos.example.com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
ldap_access_filter = uniqueMember=cn=grouname,ou=UnixShell,ou=Services,o=example,c=ru
debug_level = 255
auth_provider = ldap
chpass_provider = ldap
[sssd]
services = nss, pam
config_file_version = 2
domains = default
[nss]
[pam]
[sudo]
[autofs]
[ssh]
[pac]
답변1
나는 이 문제로 오랫동안 고민해 왔습니다. CentOS6의 경우 구성 파일 을 /etc/openldap/ldap.conf
./etc/pam_ldap.conf
pam_groupdn
$ cp /etc/openldap/ldap.conf /etc/pam_ldap.conf
또는 둘 사이에 심볼릭 링크를 만들 수도 있습니다.