Linux

[ldapsearch] 사용법

비번변경 2022. 5. 22. 17:58

ldapsearch

LDAP 서버에 연결하여 지정된 매개변수를 사용하여 검색을 수행한다.

 

이 글에서는 ldapsearch 사용 방법을 간단하게 정리한다.

 

설치

Ubuntu는 아래의 명령어로 설치할 수 있다.

apt install ldap-utils

 

서버 연결/인증

ldap 서버에서 검색을 수행하기 위해서는 서버 접속 정보와 계정 정보를 인증해야 한다. 따라서 아래와 같이 ldap 서버 주소, 포트, 검색할 DN, 계정, 계정 비밀번호 등을 지정해야 한다.

ldapsearh -h <SERVER> -p <PORT> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>"
# -h : ldap 서버 주소
# -p : port 지정
# -b : 검색할 DN 경로
# -D : 인증할 계정
# -w : 계정 비밀번호

# 예시
ldapsearh -h 192.168.10.45 -p 389 -b "OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net" -D "tistory.help@tistory.com" -w "비밀번호"

비밀번호를 터미널에서 직접 입력하고 싶다면 -w 옵션이 아니라 -W 옵션을 사용한다.

ldapsearh -h <SERVER> -p <PORT> -b "<searchbaseDN>" -D "<bindDN>" -W

참고로 ldap 서버와 포트를 지정하는 -h, -p 옵션이 deprecate 되었기 때문에 ldap URI를 지정하는 -H 옵션을 사용하는 것을 권장한다.

ldapsearh -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>"
ldapsearh -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -W
# -H : LDAP 서버 URI 지정. 프로토콜, 호스트, 포트를 공백 또는 쉼표로 구분한다.

# 예시
ldapsearh -H ldap://192.168.10.45 -b "OU=Domestic(Korea),OU=CDX Users,DC=CDX,DC=net" -D "tistory.help@tistory.com" -w "비밀번호"

 

검색

인증 정보 외의 별도 옵션이나 매개변수를 지정하지 않으면 모든 정보를 반환한다.

원하는 정보를 찾기 위해서는 적절한 옵션을 지정해야 한다.

 

모든 속성의 속성 이름만 검색

속성이 엔트리에 있는지 확인할 때는 -A 옵션을 사용할 수 있다.

ldapsearch -A -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>"
# -A : 값 없이 속성만 반환한다.

ldapsearch 속성명만 검색

 

원하는 속성만 검색

특정 속성만을 확인하고 싶을 때는 원하는 속성 이름을 공백으로 구분하여 나열하면 된다.

ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" [<ATTR>|<ATTR>|<ATTR>]

# 예시 - cn, name, comment 속성만 검색
ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" cn name comment

ldapsearch 원하는 속성만 검색

 

조건 검색

특정 속성과 값에 해당하는 엔트리만 검색하고 싶을 때는 attributeType=value 형식으로 조건을 준다.

ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" <ATTR=VALUE>

# 예시
ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" cn=*kim

검색한 결과에서 원하는 속성만을 출력하고 싶다면 조건문 뒤에 공백을 두고 속성명을 나열한다.

ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" <ATTR=VALUE> ATTR ATTR

# 예시
ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" cn=*kim cn mail

 

AND 검색

& 연산자를 사용하여 여러 조건을 동시에 만족하는 엔트리를 검색할 수 있다.

ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" '(&(<ATTR=VALUE>)(<ATTR=VALUE>))'

# 예시
ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" '(&(cn=*kim)(mail=*daum*))'

 

OR 검색

| 연산자를 사용하여 여러 조건 중 하나 이상을 만족하는 엔트리를 검색할 수 있다..

ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" '(|(<ATTR=VALUE>)(<ATTR=VALUE>))'

# 예시
ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" '(|(cn=*kim)(mail=*daum*))'

 

NOT 검색

! 연산자를 사용하여 조건을 만족하지 않는 엔트리를 검색할 수 있다.

ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" '(!(<ATTR=VALUE>))'

# 예시
ldapsearch -H <ldap_URI> -b "<searchbaseDN>" -D "<bindDN>" -w "<passwd>" '(!(cn=*kim))'

 

 


참고 문서

https://docs.ldap.com/ldap-sdk/docs/tool-usages/ldapsearch.html

https://ksw222.tistory.com/9

https://www.linuxhowto.net/how-to-search-ldap-using-ldapsearch-with-examples/

https://geekstuff.org/openldap-ldapsearch/