
OpenLDAP(2.4.45, FreeBSD)에서는 소켓을 통해 연결이 이루어질 때만 DN 액세스를 제공하여 DN 액세스를 속성으로 제한하려고 합니다. 그러나 성공하지 못했습니다.
내가 노력하는 것은
olcAccess: to attrs=userPassword
by dn.base="uid=pwreset,ou=service,dc=example,dc=edu"
sockname.exact="/var/run/openldap/ldapi"
write
(아이디어는 pwreset
자동 비밀번호 재설정 스크립트에서 DN을 사용할 수 있지만 해당 DN은 스크립트가 LDAP 서버와 동일한 시스템에서 실행 중인 경우에만 해당 액세스 권한을 갖게 된다는 것입니다.)
이 by
문구는 Sect.의 제작과 일치하는 것으로 보입니다. 8.3개OpenLDAP 액세스 제어 문서<who>
, 그리고 필드의 항목이 '조합으로 지정될 수 있다' 는 slapd.access(5)의 설명입니다 . 실제로 구문 경고가 생성되지 않습니다. 나는 그 조합이 다음을 의미한다고 추측한다.그리고보다는또는– 이는 문서에 명시되어 있지 않습니다. OpenLDAP 문서나 웹에서 이를 다루는 예제를 찾을 수 없습니다.
이 스탠자는 sockname
요소가 없을 때 작동하며, 구성이 예상대로 작동하고 있음을 나타냅니다.
userPassword
이 DN을 사용하여 속성을 쓰려고 하면 ldap_modify: Insufficient access (50)
오류가 발생합니다.
OpenLDAP 문서에는 (다소 놀랍게도) 이 sockname
요소의 효과가 무엇인지 명시적으로 명시되어 있지 않으며, slapd.access(5) 페이지에는 다음과 같이 비스듬하게 명시되어 있습니다.
peername=<peername>
,sockname=<sockname>
,domain=<domain>
및 문은 피어 이름, 명명된 파이프 파일 이름에 대한 연결 호스트 IP( IPv4 또는 IPv6의sockurl=<sockurl>
형식 ) 또는 연결 호스트 명명된 파이프 파일 이름( 명명된 파이프를 통해 연결하는 경우 형식 )을 의미합니다. sockname의 경우 도메인의 접속 호스트 이름과 sockurl의 접속 URL을 비교하여 액세스를 결정합니다.IP=<ip>:<port>
IP=[<ipv6>]:<port>
PATH=<path>
pattern
실제로는 별로 의미가 없습니다.
이 액세스 사양의 요점을 완전히 오해한 것입니까, 아니면 이를 수행하는 다른 방법이 있습니까?
답변1
올바른 구문(적어도 이 OpenLDAP 버전의 경우)은 다음과 같습니다.
olcAccess: to attrs=userPassword
by dn.base="uid=pwreset,ou=service,dc=example,dc=edu"
sockname.exact="PATH=/var/run/openldap/ldapi"
write
Quanah Gibson-Mount에게 감사드립니다.openldap 기술 목록해결책을 제시하기 위한 것입니다.