ldapsearch를 사용하여 그룹 구성원 나열


12

회사 LDAP 디렉토리는 Snow Leopard Server Open Directory 설정에 있습니다. 이 ldapsearch도구 를 사용하여 외부 인증을 위해 다른 외부 LDAP 서버로 가져 오기 위해 .ldif 파일을 내보내 려고합니다 . 기본적으로 내부 및 외부에서 동일한 자격 증명을 사용하려고합니다.

나는 ldapsearch"Users"OU에있는 모든 것의 내용과 속성을 제공하고 필요한 속성으로 만 필터링했습니다.

ldapsearch -xLLL -H ldap://server.domain.net / 
 -b "cn=users,dc=server,dc=domain,dc=net" objectClass / 
 uid uidNumber cn userPassword > directorycontents.ldif

원격 OpenLDAP 서버로 가져올 수있는 사용자 및 속성 목록이 표시됩니다.

dn: uid=username1,cn=users,dc=server,dc=domain,dc=net
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: organizationalPerson
uidNumber: 1000
uid: username1
userPassword:: (hashedpassword)
cn: username1

그러나 "컨테이너"대신 OD "그룹"에서 동일한 쿼리를 시도하면 결과는 다음과 같습니다.

dn: cn=groupname,cn=groups,dc=server,dc=domain,dc=net
objectClass: posixGroup
objectClass: apple-group
objectClass: extensibleObject
objectClass: top
gidNumber: 1032
cn: groupname
memberUid: username1
memberUid: username2
memberUid: username3

내가 정말로 원하는 것은 그룹 멤버십을 기준으로 필터링 된 상위 예제의 사용자 목록이지만 멤버십은 사용자 계정 측이 아닌 그룹 측에서 설정 한 것처럼 보입니다. 이것을 걸러 내고 필요한 것을 내보내는 방법이 있어야합니다.

답변:


4

LDAP를 사용하지만 특정 브랜드의 서버는 사용하지 않습니다.

먼저 시도해보아야 할 것은 사용자의 예제와 달리 모든 속성을 가져 오는 사용자를 검색하는 것입니다.

ldapsearch -xLLL -H ldap://server.domain.net \
    -b "cn=users,dc=server,dc=domain,dc=net" uid=username1 \* +

종종 사용자에 "memberOf"속성이있어 사용자가 속한 그룹의 그룹 이름 또는 그룹 DN이 그룹의 정보와 동기화 된 상태로 유지됩니다. 그것이 있다면, 그것이 당신이 원하는 것을하는 가장 쉬운 방법입니다.

*모든 사용자 속성 (기본 동작)을 잡아 것이며,이 +모든 작업 속성 (특수 특성)을 잡아 것입니다.


이것은 오래된 스레드이지만 OpenLDAP (Open Directory의 기초) memberOf는 작동 속성이므로 명시 적으로 요청해야합니다. A는 단순한 ldapsearch여기에 제안처럼 반환하지 않습니다 memberOf이 존재하더라도. 또한 언급해야한다 memberOf나는 이것이 OS X 및 오픈 디렉토리에서 처리하는 방법을 모른다하더라도 오버레이는 일반적으로, 기본적으로 사용되지 않습니다.
daff

@daff 나는 +가 모든 운영 속성을 얻어야한다고 믿는다.
freiheit

아 참으로. 업데이트 된 내용 ldapsearch이 광고 된대로 작동합니다.
daff

0

사용자 컨테이너를 다른 컨테이너에 배치하여 그룹을 나타내는 것을 목표로하고 있습니까? 처럼:

dn: uid=username1,cn=users,cn=accounting,dc=server,dc=domain,dc=net
...
dn: uid=username2,cn=users,cn=engineering,dc=server,dc=domain,dc=net
...

그렇다면 LDIF를 마사지하는 스크립트를 작성해야합니다. 훌륭한 Python-LDAP 모듈을 사용해보십시오 .

그래도 왜 그렇게하고 싶은지 궁금합니다. 여러 그룹에 속한 사용자를 갖는 것은 지저분하며 Open Directory의 규칙에 위배됩니다. 모든 사용자 및 그룹 객체를 OpenLDAP 서버에 복사하고 사용자 객체가있는 컨테이너가 아닌 그룹 멤버쉽을 기준으로 쿼리 할 수 ​​있습니까?


0
ldapsearch -x \
-b "cn=<your group name>,ou=group,dc=<your org>,dc=com" \
-H ldaps://<ldap server>:<port>

이것은 매우 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.