10.4. LDAP 검색(ldapsearch) 예
다음 예제에서는 디렉터리를 통해 검색하는 데 사용되는 가장 일반적인 'ldapsearch'es를 제공합니다.
사전 요구 사항
- 디렉터리의 모든 항목을 검색합니다.
-
검색 및 읽기 작업에 대한 익명 액세스를 지원하도록 디렉터리를 구성했습니다. 따라서 명령에서 바인딩 정보를 제공하기 위해
-W
및-D
옵션을 사용할 필요가 없습니다. 익명 액세스에 대한 자세한 내용은 익명 액세스 권한을 참조하십시오. - 서버는 기본 포트 389를 사용합니다. 검색 요청에 지정할 필요가 없습니다.
-
서버에는
server.example.com
호스트 이름이 있습니다. -
포트
636
에서 서버에 대해 TLS를 활성화했습니다. 기본 LDAPS 포트 번호입니다. -
Directory Server는 모든 데이터를
dc=example,dc=com
접미사 아래에 저장합니다.
10.4.1. 모든 항목 반환 링크 복사링크가 클립보드에 복사되었습니다!
다음 LDAP 검색에서는 디렉터리의 모든 항목을 반환합니다.
ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)"
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)"
(objectclass=*)
검색 필터를 사용하여 디렉터리의 모든 항목을 반환합니다. 각 항목에는 오브젝트 클래스가 있어야 하며 objectclass
속성은 항상 인덱싱됩니다.
10.4.2. 명령줄에서 검색 필터 지정 링크 복사링크가 클립보드에 복사되었습니다!
필터를 따옴표로 묶어 명령에 직접 검색 필터를 지정할 수 있습니다("필터"). 명령에 필터를 제공하는 경우 -f
옵션을 지정하지 마십시오. 예를 들어 "cn=babs jensen"
을 지정하려면 다음을 입력합니다.
ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "cn=babs jensen"
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "cn=babs jensen"
10.4.3. Root DSE 항목 검색 링크 복사링크가 클립보드에 복사되었습니다!
루트 DSE는 로컬 Directory Server에서 지원하는 모든 접미사를 포함하여 디렉터리 서버 인스턴스에 대한 정보가 포함된 특수 항목입니다. 검색 기반 ""
, 검색 범위 기본
, 필터 "objectclass=*"
를 제공하여 이 항목을 검색합니다. 예를 들면 다음과 같습니다.
ldapsearch -H ldap://server.example.com -x -b "" -s base "objectclass=*"
# ldapsearch -H ldap://server.example.com -x -b "" -s base "objectclass=*"
10.4.4. 스키마 항목 검색 링크 복사링크가 클립보드에 복사되었습니다!
cn=schema
항목은 개체 클래스 및 특성 유형과 같은 디렉터리 스키마에 대한 정보를 포함하는 특수 항목입니다.
cn=schema
항목의 내용을 나열하려면 다음 명령 중 하나를 입력합니다.
ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub objectClasses attributeTypes matchingRules \ matchingRuleUse dITStructureRules nameForms ITContentRules ldapSyntaxes
# ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub objectClasses attributeTypes matchingRules \ matchingRuleUse dITStructureRules nameForms ITContentRules ldapSyntaxes
또는
ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub "+"
# ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub "+"
10.4.5. LDAP_BASEDN 변수 사용 링크 복사링크가 클립보드에 복사되었습니다!
검색을 단순화하기 위해 LDAP_BASEDN
환경 변수를 사용하여 검색 기반을 설정할 수 있습니다. -b
옵션과 함께 ldapsearch
명령을 사용하는 대신 LDAP_BASEDN
을 설정할 수 있습니다. 환경 변수 설정에 대한 자세한 내용은 운영 체제 설명서를 참조하십시오.
LDAP_BASEDN
을 디렉터리 접미사 값으로 설정합니다. 디렉터리 접미사는 디렉터리의 root 항목과 동일하므로 모든 검색은 디렉터리 루트 항목에서 시작됩니다.
예를 들어 LDAP_BASEDN
변수를 dc=example,dc=com
으로 설정하고 디렉터리에서 cn=babs jensen
을 검색하려면 다음을 입력합니다.
export LDAP_BASEDN="dc=example,dc=com" ldapsearch -H ldap://server.example.com -x "cn=babs jensen"
# export LDAP_BASEDN="dc=example,dc=com"
# ldapsearch -H ldap://server.example.com -x "cn=babs jensen"
이 명령은 범위를 지정하는 데 -s
옵션이 제공되지 않았기 때문에 기본 범위 하위
를 사용합니다.
10.4.6. 속성의 하위 집합 표시 링크 복사링크가 클립보드에 복사되었습니다!
ldapsearch
명령은 모든 검색 결과를 LDIF 형식으로 반환합니다. 기본적으로 ldapsearch
는 항목 고유 이름(DN)과 사용자가 읽을 수 있는 모든 속성을 반환합니다. 사용자가 지정된 디렉터리 항목에서 속성 하위 집합만 읽을 수 있도록 디렉터리 액세스 제어를 설정할 수 있습니다.
Directory Server는 기본적으로 운영 속성을 반환하지 않습니다. 검색 작업의 결과로 작동 속성을 반환하려면 검색 명령에 이러한 속성을 명시적으로 지정하거나 +
인수를 사용하여 모든 작동 속성을 반환합니다. 자세한 내용은 운영 속성 검색을 참조하십시오.
검색 필터 후 명령줄에서 필요한 특성을 지정하여 반환된 속성을 몇 가지 특정 속성으로 제한할 수 있습니다.
예를 들어 디렉터리의 모든 항목에 대한 cn
및 sn
속성을 표시하려면 다음을 입력합니다.
ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" sn cn
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" sn cn
10.4.7. 운영 속성 검색 링크 복사링크가 클립보드에 복사되었습니다!
운영 속성은 Directory Server가 자체적으로 설정하는 특수 속성입니다. Directory Server는 운영 특성을 사용하여 액세스 제어 지침 처리와 같은 유지 관리 작업을 수행합니다. 이러한 속성은 이 항목이 처음 생성된 시간과 이를 생성한 사용자의 이름과 같은 항목에 대한 특정 정보를 표시합니다.
항목의 개체 클래스에 대해 특성을 구체적으로 정의하더라도 디렉터리의 모든 항목에서 작동 속성을 사용할 수 있습니다.
일반 ldapsearch
명령은 작동 속성을 반환하지 않습니다. RFC3673 에 따르면 검색 요청의 모든 운영 속성을 반환하려면 +
를 사용합니다.
ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" '+'
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" '+'
정의된 특정 운영 속성만 반환하려면 ldapsearch
요청에 명시적으로 지정합니다.
ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" creatorsName createTimestamp modifiersName modifyTimestamp
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" creatorsName createTimestamp modifiersName modifyTimestamp
운영 속성의 전체 목록은 운영 속성 및 개체 클래스 를 참조하십시오.
지정된 운영 특성과 함께 모든 일반 항목 속성을 반환하려면 나열된 운영 속성 외에도 특수 검색 속성인 "*"
을 사용합니다.
ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" "*" aci
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" "*" aci
쉘이 해석되지 않도록 별표(*)를 따옴표로 묶어야 합니다.
10.4.8. 파일을 사용하여 검색 필터 지정 링크 복사링크가 클립보드에 복사되었습니다!
명령줄에서 검색 필터를 입력하는 대신 파일에 검색 필터를 지정할 수 있습니다.
파일의 개별 행에 대해 각 검색 필터를 지정합니다. ldapsearch
명령은 파일에 표시되는 순서대로 각 검색을 실행합니다.
예를 들어 파일에는 다음 필터가 포함되어 있습니다.
sn=example givenname=user
sn=example
givenname=user
ldapsearch
명령은 먼저 ' 예
'로 설정된 모든 항목을 찾은 다음 지정된 이름이
user
로 설정된 모든 항목을 찾습니다. 검색 요청이 두 검색 기준과 일치하는 항목을 발견하면 항목이 두 번 반환됩니다.
다음 검색에서 필터는 searchdb
라는 파일에 지정됩니다.
ldapsearch -H ldap://server.example.com -x -f searchdb
# ldapsearch -H ldap://server.example.com -x -f searchdb
검색 줄 끝에 속성 이름을 지정하여 반환된 속성 세트를 제한할 수 있습니다. 예를 들어 다음 ldapsearch
명령은 검색을 수행하지만 각 항목의 DN 및 지정된 이름
및 sn
속성만 반환합니다.
ldapsearch -H ldap://server.example.com -x -f searchdb sn givenname
# ldapsearch -H ldap://server.example.com -x -f searchdb sn givenname
10.4.9. 검색 필터에 쉼표가 포함된 DN 지정 링크 복사링크가 클립보드에 복사되었습니다!
검색 필터 내의 DN에 해당 값의 일부로 쉼표가 포함된 경우 검색 명령은 백슬래시(\)를 사용하여 쉼표를 이스케이프해야 합니다. 예를 들어 example.com Bolivia, S.A.
하위 트리에서 모든 사용자를 찾으려면 다음을 입력합니다.
ldapsearch -H ldap://server.example.com -x -s base -b "l=Bolivia\, S.A.,dc=example,dc=com" "objectclass=*"
# ldapsearch -H ldap://server.example.com -x -s base -b "l=Bolivia\, S.A.,dc=example,dc=com" "objectclass=*"
10.4.10. 필터에서 nsRole 가상 속성 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 예에서 ldapsearch
명령은 managed_role
값으로 설정된 nsrole
속성이 포함된 모든 사용자 항목의 DN을 검색합니다.
ldapsearch -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsrole=cn=managed_role,dc=example,dc=com)" dn
# ldapsearch -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsrole=cn=managed_role,dc=example,dc=com)" dn
10.4.11. 클라이언트 인증서를 사용하여 Directory Server에 바인딩 링크 복사링크가 클립보드에 복사되었습니다!
인증서 기반 인증에 대한 자세한 내용은 인증서 기반 인증 구성을 참조하십시오.
10.4.12. 언어 일치 규칙으로 검색 링크 복사링크가 클립보드에 복사되었습니다!
검색 필터에서 일치하는 규칙을 명시적으로 제출하려면 속성 뒤에 일치하는 규칙을 삽입합니다.
attr:matchingRule:=value
attr:matchingRule:=value
일치 규칙은 국제화된 디렉토리를 검색하는 데 자주 사용됩니다. 다음 명령은 스웨덴 (2.16.840.1.113730.3.3.2.46.1
)에서 N4709
이후의 부서 번호를 검색합니다.
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
국제화된 검색을 수행하는 더 많은 예 는 국제화된 디렉토리 검색을 참조하십시오.
10.4.13. 사용자가 속하는 그룹 검색 링크 복사링크가 클립보드에 복사되었습니다!
uid=jdoe,ou=people,dc=example,dc=com
이 멤버인 모든 직접 또는 간접 그룹을 찾으려면 다음을 입력합니다.
ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)" dn
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)" dn
inchainMatch
일치 규칙이 있는 검색은 익명 액세스를 지원하지 않습니다. inchainMatch
일치 규칙을 사용하는 방법에 대한 자세한 내용은 inchainMatch
일치 규칙 사용을 참조하여 LDAP 항목의 상위 항목을 찾습니다.
10.4.14. 그룹 멤버 검색 링크 복사링크가 클립보드에 복사되었습니다!
marketing
그룹의 모든 직접 또는 간접 멤버를 찾으려면 다음을 입력합니다.
ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(memberof:1.2.840.113556.1.4.1941:=cn=marketing,ou=groups,dc=example,dc=com)" dn
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(memberof:1.2.840.113556.1.4.1941:=cn=marketing,ou=groups,dc=example,dc=com)" dn
inchainMatch
일치 규칙이 있는 검색은 익명 액세스를 지원하지 않습니다. inchainMatch
일치 규칙을 사용하는 방법에 대한 자세한 내용은 inchainMatch
일치 규칙 사용을 참조하여 LDAP 항목의 상위 항목을 찾습니다.
10.4.15. 비트 필드 값으로 속성 검색 링크 복사링크가 클립보드에 복사되었습니다!
비트 단위 검색에서는 비트별 AND
또는 비트별 또는 일치 규칙을 사용하여 비트 필드인 속성에서 비트 검색 작업을 수행합니다.
bit 필드의 값이 있는 속성은 LDAP에서 일반적이지 않습니다. 기본 디렉터리 서버 스키마는 비트 필드를 특성 구문으로 사용하지 않습니다. 그러나 여러 LDAP 구문은 정수 스타일 값을 지원합니다. 비트 필드 값을 사용하도록 사용자 지정 속성을 정의할 수 있습니다. 애플리케이션에서는 사용자 지정 속성을 사용하여 비트 필드 값에 대해 비트별 작업을 수행할 수 있습니다.
비트 및
일치 규칙(1.2.840.113556.1.4.803
)은 어설션 값에 지정된 비트가 비트 필드 속성 값에 설정되어 있는지 확인합니다. 이는 동등한 검색과 유사합니다. 다음 예제에서는 userAccountControl
값을 2
를 나타내는 비트로 설정합니다.
"(UserAccountControl:1.2.840.113556.1.4.803:=2)"
"(UserAccountControl:1.2.840.113556.1.4.803:=2)"
다음 예제에서는 userAccountControl
값에 값 6
(비트 2
및 4
)에 설정된 모든 비트가 있어야 함을 보여줍니다.
"(UserAccountControl:1.2.840.113556.1.4.803:=6)”
"(UserAccountControl:1.2.840.113556.1.4.803:=6)”
비트 또는
일치 규칙(1.2.840.113556.1.4.804
)은 어설션 문자열에 있는 비트 중 하나가 특성 값에 표시되는지 확인합니다. 하위 문자열 검색과 유사합니다. 이 예에서 UserAccountControl
값에는 6
의 비트 필드에 설정된 비트 중 하나가 있어야 합니다. 즉, 특성 값이 2
,4
또는 6
일 수 있습니다.
"(UserAccountControl:1.2.840.113556.1.4.804:=6)"
"(UserAccountControl:1.2.840.113556.1.4.804:=6)"
Samba 파일 서버 사용과 같은 Windows-Linux 통합과 함께 비트별 검색을 사용할 수 있습니다.