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 -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
조건 검색
특정 속성과 값에 해당하는 엔트리만 검색하고 싶을 때는 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://www.linuxhowto.net/how-to-search-ldap-using-ldapsearch-with-examples/