OpenLDAP - ACL 규칙 변경 후 사용자가 로그인할 수 없습니다.

OpenLDAP - ACL 규칙 변경 후 사용자가 로그인할 수 없습니다.

저는 복제 기능이 있는 OpenLDAP 서버를 가지고 놀고 있는데, 복제 사용자가 소스 호스트의 모든 것을 읽을 수 있도록 적절한 ACL을 설정해야 했습니다.

읽고 나서이 기사다음과 같은 규칙 세트를 만들었습니다.

olcAccess: {0}to * by dn.base="cn=admin,dc=example,dc=com" manage
olcAccess: {1}to * by dn.base="uid=rpuser,dc=example,dc=com" read
olcAccess: {2}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {3}to attrs=shadowLastChange by self write by * read
olcAccess: {4}to * by users read

내가 달성하고 싶었던 것은 다음과 같습니다.

  1. 관리자는 제한 없이 모든 작업을 수행할 수 있습니다.
  2. 복제 사용자는 모든 내용을 읽을 수 있습니다.
  3. 사용자는 자신의 비밀번호를 변경할 수 있습니다.
  4. 디렉토리에 대한 모든 접근은 로그인한 사용자만 가능하며 익명 접근은 불가능합니다.

위의 ACL을 서버에 설정한 후 복제 사용자는 전혀 로그인할 수 없습니다. 왜 이런 일이 발생하는지 이해할 수 없습니다. 복제 사용자 DN은 정확하며 제가 아는 한 일치해야 합니다...

로그인 시도 후 서버 로그:

slapd[3475]: => access_allowed: result not in cache (userPassword)
slapd[3475]: => access_allowed: auth access to "uid=rpuser,dc=example,dc=com" "userPassword" requested
slapd[3475]: => acl_get: [1] attr userPassword
slapd[3475]: => acl_mask: access to entry "uid=rpuser,dc=example,dc=com", attr "userPassword" requested
slapd[3475]: => acl_mask: to value by "", (=0)
slapd[3475]: <= check a_dn_pat: cn=admin,dc=example,dc=com
slapd[3475]: <= acl_mask: no more <who> clauses, returning =0 (stop)
slapd[3475]: => slap_access_allowed: auth access denied by =0
slapd[3475]: => access_allowed: no more rules

제가 올바르게 이해했다면 첫 번째 ACL만 확인하나요?

답변1

해당 ACL은 테스트되지 않았지만 작동해야 합니다.

olcAccess: {0}to * by dn.base="cn=admin,dc=example,dc=com" manage by * break
olcAccess: {1}to * by dn.base="uid=rpuser,dc=example,dc=com" read by * break
olcAccess: {2}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {3}to attrs=shadowLastChange by self write by * read
olcAccess: {4}to * by users read

처음 두 규칙이 필요하므로 by * break특정 절에 일치하는 항목이 없으면 by다음 규칙이 확인됩니다. or by * break에는 필요하지 않습니다 . 대체가 없어야 합니다 .attrs=userPasswordattrs=shadowLastChangeto * by users read

관련 정보