항목 검색 및 검색 튜닝
디렉터리 항목 찾기 및 검색 성능 개선
초록
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선할 수 있는지 알려 주십시오. 이렇게 하려면 다음을 수행합니다.
Jira (계정 필요)를 통해 피드백을 제출하려면 다음을 수행합니다.
- Jira 웹 사이트에 로그인합니다.
- 상단 탐색 모음에서 생성 을 클릭합니다.
- 요약 필드에 설명 제목을 입력합니다.
- 설명 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
- 대화 상자 하단에서 생성 을 클릭합니다.
Bugzilla (계정 필요)를 통해 피드백을 제출하려면 다음을 수행합니다.
- Bugzilla 웹 사이트로 이동하십시오.
- 구성 요소로 문서를 사용합니다.
- 설명 필드에 문서 개선을 위한 제안 사항을 기입하십시오. 관련된 문서의 해당 부분 링크를 알려주십시오.
- 버그 제출을 클릭합니다.
1장. 명령줄을 사용하여 항목 찾기(ldapsearch)
ldapsearch
명령줄 유틸리티를 사용하여 디렉터리 항목을 검색할 수 있습니다. 이 유틸리티는 지정된 ID 및 자격 증명을 사용하여 지정된 서버에 대한 연결을 열고 지정된 검색 필터를 기반으로 항목을 찾습니다. 검색 범위는 다음과 같습니다.
-
단일 항목(
-s base
) -
항목 직위 하위 항목 (
-1
) -
전체 트리 또는 하위 트리(
-s 하위
)
ldapsearch
유틸리티는 고유 이름의 속성을 기반으로 디렉터리 항목을 검색하지 않습니다. 고유 이름은 디렉터리 항목의 고유 식별자일 뿐이며 검색 키로 사용할 수 없습니다. 대신 ldapsearch
는 항목에 저장된 속성 값 쌍을 기반으로 항목을 검색합니다. 항목의 고유 이름이 (예 :
uid=bjensen,ou=People,dc=example,dc=com
)인 경우 dc=example
에 대한 검색이 이 항목에 명시적으로 추가되지 않는 한 해당 항목과 일치하지 않습니다.
ldapsearch 유틸리티는 RFC 2849 사양에 정의된 LDIF 형식의 결과를 반환합니다.
1.1. ldapsearch 명령 형식
ldapsearch
명령은 다음 형식을 사용해야 합니다.
# ldapsearch [-x | -Y mechanism] [options] [search_filter] [list_of_attributes]
-x
또는-Y
-x
(간단한 바인딩) 또는-Y
(SASL 메커니즘)를 사용하여 연결 유형을 구성합니다.options
ldapsearch
명령줄 옵션입니다. 검색 필터 앞에 옵션을 지정합니다(있는 경우).search_filter
LDAP 검색 필터입니다.
-f
옵션을 사용하여 파일에서 검색 필터를 구성하는 경우 검색 필터를 지정하지 마십시오.list_of_attributes
공백 문자로 구분된 특성 목록입니다. 특성 목록을 지정하면 검색 결과에서 반환된 속성 수를 줄일 수 있습니다. 이 속성 목록은 검색 필터 뒤에 표시되어야 합니다. 속성 목록을 지정하지 않으면 작동 특성을 제외하고 디렉터리에 설정된 액세스 제어에서 허용하는 모든 속성에 대한 검색에서 값을 반환합니다.
검색에서 작동 속성을 반환하려면
ldapsearch
search 명령에 명시적으로 지정해야 합니다. 오브젝트의 모든 운영 속성을 반환하려면+
를 사용합니다. 명시적으로 지정된 운영 속성 외에도 일반 속성을 검색하려면 속성 목록에서 별표(*
)를 사용합니다.별표 문자는 백슬래시(
\*
)로 이스케이프해야 할 수 있습니다.일치하는 DN 목록만 검색하려면 특성
1.1
을 사용합니다. 예를 들면 다음과 같습니다.# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com \ -b "dc=example,dc=com" -x "(objectclass=inetorgperson)" 1.1
1.2. 일반적으로 사용되는 ldapsearch 옵션
다음 표에는 가장 일반적으로 사용되는 ldapsearch
유틸리티 옵션이 나열되어 있습니다. 지정된 값에 공백 문자가 포함된 경우 값은 다음과 같이 단일 또는 이중 따옴표로 묶어야 합니다.
-b "cn=My Special Group,ou=groups,dc=example,dc=com"
OpenLDAP의 ldapsearch
유틸리티는 기본적으로 SASL 연결을 사용합니다. 간단한 바인딩을 수행하거나 TLS를 사용하려면 -x
인수를 사용하여 SASL을 비활성화하고 다른 연결 방법을 허용합니다.
옵션 | 설명 |
---|---|
-b |
검색의 시작점 - base Distinguished Name (DN)을 지정합니다. 데이터베이스에 고유 이름이 있어야 합니다. |
-D |
서버에 인증하는 데 사용되는 DN을 지정합니다. 디렉터리 서버는 DN 값을 인식해야 하며 DN에는 항목을 검색할 권한이 있어야 합니다. 예: |
-H |
서버에 연결할 LDAP URL을 지정합니다. LDAP URL의 형식은 다음과 같습니다. ldap[s]://hostname:[port]
포트 값을 지정하는 것은 선택 사항입니다. 그러면
유틸리티는 슬래시( ldapi://%2Ffull%2Fpath%2Fto%2Fslapd-example.socket
LDAPI의 경우 서버가 수신 대기 중인 LDAPI 소켓을 나타내는 파일의 전체 경로를 지정합니다. URL을 지정하지 않은 경우 |
-h |
Directory Server가 설치된 시스템의 호스트 이름 또는 IP 주소를 지정합니다. 예: 참고
|
-p |
Directory Server에서 사용하는 TCP 포트 번호를 지정합니다. 예를 들면 참고
|
-l |
검색 요청이 완료될 때까지 최대 시간 제한(초)을 지정합니다. 예를 들면 |
-s 범위 | 검색 범위를 지정합니다. 다음 범위 중 하나를 선택할 수 있습니다.
|
-W |
암호를 입력하라는 메시지가 표시됩니다. 옵션을 지정하지 않은 경우 참고 암호는 다른 사용자의 프로세스 목록에 표시될 수 있으며 쉘의 기록에 저장됩니다. |
-x | 간단한 바인딩을 허용하도록 기본 SASL 연결을 비활성화합니다. |
-Y SASL_mechanism |
인증에 사용할 SASL 메커니즘을 설정합니다. 메커니즘을 설정하지 않으면 |
-z number |
검색 요청에 대한 응답으로 반환할 최대 항목 수를 설정합니다. 이 값은 루트 DN을 사용하여 바인딩할 때 |
-f | 검색 필터가 포함된 파일을 지정합니다. |
1.3. 특수 문자 사용
ldapsearch
유틸리티를 사용하는 경우 명령줄 인터프리터(예: 공백 문자, 별표(*
)) 또는 백슬래시(\
)와 같은 특수한 의미가 있는 문자로 값을 지정해야 할 수 있습니다. 명령줄 인터프리터에 따라 특수 문자가 있는 값을 single(' '
) 또는 double(" "
" ) 따옴표로 묶습니다. 예를 들면 다음과 같습니다.
-D "cn=John Smith,ou=Product Development,dc=example,dc=com"
일반적으로 작은 따옴표(' '
)를 사용하여 값을 묶습니다. 쉘 변수가 있는 경우 이중 따옴표(" "
)를 사용하여 변수 보간을 허용합니다.
2장. 웹 콘솔을 사용하여 항목 검색
웹 콘솔을 사용하여 디렉터리 항목을 검색할 수 있습니다.
2.1. LDAP browser을 사용하여 항목 검색
웹 콘솔에서 LDAP 10.0.0.1을 사용하여 Directory Server 데이터베이스에서 항목을 검색할 수 있습니다.
Directory Server는 이러한 항목의 고유 이름(DN)에 사용되는 속성을 기반으로 항목에 저장된 속성-값 쌍을 기반으로 항목을 검색합니다. 예를 들어 항목에 uid=user_name,ou=People,dc=example,dc=com
이라는 DN이 있는 경우 dc=example
에 대한 검색이 이 항목에 존재하는 경우에만 항목
과 일치합니다.
사전 요구 사항
- Directory Server 웹 콘솔에 로그인되어 있습니다.
- root 권한이 있습니다.
절차
- 웹 콘솔에서 LDAP → Search 로 이동합니다.
항목을 필터링할 검색 기준을 확장하고 선택합니다.
search 매개변수 설명 Search base
검색의 시작점을 지정합니다. 데이터베이스에 현재 존재하는 고유 이름(DN)입니다.
참고검색 탭은 사전 정의된 검색 베이스로 열립니다. 트리 보기 또는 테이블 보기에서 항목 세부 정보를 열 때 옵션 메뉴(anchor)를 클릭하고 검색을 선택합니다.
검색 범위
Subtree 를 선택하여 검색 기준부터 전체 하위 트리의 항목을 검색하고 모든 하위 항목을 포함합니다.
검색 기반에서 시작하여 첫 번째 수준만 포함하려면 한 레벨을 선택하여 항목을 검색합니다.
Base 를 선택하여 검색 기반으로 지정된 항목에서만 속성 값을 검색합니다.
크기 제한
검색 작업에서 반환할 최대 항목 수를 설정합니다.
시간 제한
검색 엔진이 항목을 찾을 수 있는 시간(초)을 설정합니다.
잠금 보기
스위치를
on
으로 전환하여 찾은 항목의 잠금 상태를 확인합니다.Search 속성
검색에 참여할 속성을 선택합니다. 사전 정의된 속성에서 선택하고 사용자 지정 특성을 추가할 수 있습니다.
- 검색 텍스트 필드에 속성 값을 입력하고 Enter를 누릅니다.
- 선택 사항: 검색을 추가로 세분화하려면 필터 탭에서 검색 필터를 사용하여 항목을 검색합니다.
Directory Server는 로깅+모니터링 → 요청을 기록합니다.
3장. LDAP 검색 필터
검색 필터는 검색 작업에서 반환하는 특정 항목을 선택합니다. ldapsearch
명령줄 유틸리티 또는 Directory Server 웹 콘솔에서 검색 필터를 사용할 수 있습니다.
Directory Server는 이러한 항목의 고유 이름(DN)에 사용되는 속성을 기반으로 하는 속성을 기반으로 항목을 검색합니다. 예를 들어 항목에 DN uid=user_name,ou=People,dc=example,dc=com
가 있는 경우 dc=example
에 대한 검색이 이 항목에 속성-값 쌍 dc:example
이 있는 경우에만 항목과 일치합니다.
ldapsearch
를 사용하는 경우 파일에 별도의 줄에 각 필터를 사용하여 여러 검색 필터를 정의할 수 있습니다. 또는 명령줄에서 직접 검색 필터를 지정할 수도 있습니다.
검색 필터에는 다음과 같은 기본 구문이 있습니다.
(<attribute><operator><value>)
예를 들어 검색 필터 (employeeNumber >= 500)
는 employeeNumber
를 특성으로, >= operator로, 500
을 값으로 갖습니다.
일치하는 규칙이 있는 검색 필터에는 다음과 같은 구문이 있습니다.
(<attribute>:<matching_rule>:=<value>)
예를 들어 검색 필터 (
는 특성으로Name을 제공하고, 일치하는 규칙으로 givenName
:caseExactMatch:= Daniel
)caseExactMatch
를 지정했으며, 값인 것을 나타냅니다.
부울 연산자와 함께 결합된 다양한 속성을 사용하는 필터를 정의할 수 있습니다.
3.1. LDAP 검색 필터에서 속성 사용
기본 검색에서는 항목에 속성 또는 특정 값이 있는지 찾습니다. 검색에서는 여러 가지 방법으로 항목에서 속성을 찾을 수 있습니다.
속성이 존재하는지 확인합니다(이전 검색). 존재 검색에서는 별표(
*
)를 사용하여 값과 관계없이 특정 속성 세트가 있는 모든 항목을 반환합니다.예를 들어
"(manager=*)"
필터는manager
속성이 있는 모든 항목을 반환합니다.정확한 특성 값(평등 검색)과 일치합니다. 같음 검색에서는 특정 값이 있는 속성을 찾습니다. 예를 들어
"(cn=
필터는 예제로 설정된 공통 이름(example
)"cn
)이 포함된 모든 항목을 반환합니다.속성에 language 태그와 연결된 값이 있으면 검색에서 모든 값을 반환합니다. 따라서 다음 두 속성 값은 모두
"(cn=example)"
필터와 일치합니다.cn: example cn;lang-fr: example
목록은 부분 값(하위 문자열 검색)과 일치합니다. 예를 들어
"(sn=*erson)"
검색 필터는 다음 값을 반환합니다.sn: Derson sn: Anderson
하위 문자열 검색 길이 구성에 대한 자세한 내용은 하위 문자열 인덱스에서 검색 키 길이 변경을 참조하십시오.
3.2. LDAP 검색 필터에서 연산자 사용
LDAP 검색 필터의 연산자는 속성과 지정된 검색 값 간의 관계를 설정합니다. 사용자를 검색할 때 연산자를 사용하여 범위를 설정하고, 알파벳 또는 직원 번호의 문자 하위 집합 내의 마지막 이름을 특정 번호 뒤에 반환할 수 있습니다.
(employeeNumber>=500) (sn~=suret) (salary<=150000)
잘못된 정보를 보유하거나 국제화된 디렉토리에서 검색하는 경우, 전화 전화 및 대략적인 검색을 위해 운영자를 사용하여 검색 작업을 보다 효과적으로 수행할 수 있습니다.
검색 필터에서 다음 연산자를 사용할 수 있습니다.
검색 유형 | Operator | 설명 |
---|---|---|
같음 | = |
값이 지정된 값과 정확히 일치하는 속성을 사용하여 항목을 반환합니다. 예: |
substring | =string* string |
값에 지정된 하위 문자열이 있는 속성이 포함된 항목을 반환합니다. 예: |
크거나 같음 | >= |
지정된 값보다 크거나 같은 값이 있는 속성이 포함된 항목을 반환합니다. 예: |
작거나 같음 | <= |
지정된 값보다 작거나 같은 값이 포함된 속성을 포함하는 항목을 반환합니다. 예: |
presence | =* |
지정된 특성에 대해 하나 이상의 값을 포함하는 항목을 반환합니다. 예: |
대략 | ~= |
검색 필터에 지정된 값과 거의 같은 값이 있는 지정된 속성이 포함된 항목을 반환합니다. 예를 들어, |
3.3. 복합 LDAP 검색 필터 사용
다음과 같이 접두사 표기법으로 표시된 부울 연산자를 사용하여 여러 LDAP 검색 필터 구성 요소를 결합할 수 있습니다.
(<boolean-operator>(filter)(filter)(filter)...)
다음 부울 연산자를 사용할 수 있습니다.
Operator | symbol | 설명 |
---|---|---|
AND | Ampersand (&) |
지정된 필터가 true이면 모두 지정된 필터가 true여야 합니다. 예: |
또는 | 수직 표시줄(|) |
문을 true로 설정하려면 하나 이상의 지정된 필터가 true여야 합니다. 예: |
NOT | 느낌표 (!) |
지정된 조건이 true이면 안 됩니다.The specified statement must not be true for the statement to be true. NOT 연산자의 영향을 받는 필터는 하나만 있습니다. 예: |
검색 작업은 다음 순서로 부울 식을 평가합니다.
- 먼저 가장 외부적 인 괄호 표현입니다.
- 그런 다음 서버는 가장 제한적인 표현식을 먼저 평가하도록 순서를 변경합니다.
복합 검색 필터는 다음과 같은 완료된 표현식에 함께 중첩될 때 가장 유용합니다.
(<boolean-operator>(filter)((<boolean-operator>(filter)(filter))))
복합 필터를 다른 유형의 검색(약관, 하위 문자열 및 기타 연산자)과 결합하여 자세한 결과를 얻을 수 있습니다. 다음 예제 필터는 조직 단위(ou
)가 마케팅
으로 있고 설명
속성이 하위 문자열 X.500
를 포함하지 않는 모든 항목을 반환합니다.
(&(ou=Marketing)(!(description=*X.500*)))
또한 관리자를
example
또는 demo
로 설정한 항목을 반환하도록 필터를 확장할 수 있습니다.
(&(ou=Marketing)(!(description=*X.500*))(|(manager=cn=example,ou=Marketing,dc=example,dc=com)(manager=cn=demo,ou=Marketing,dc=example,dc=com)))
다음 예제 필터는 사용자를 나타내지 않는 모든 항목을 반환합니다.
(!(objectClass=person))
다음 필터는 사용자를 나타내지 않는 모든 항목을 반환하고 공통 이름(cn
)은 printer3b
와 유사합니다.
(&(!(objectClass=person))(cn~=printer3b))
3.4. LDAP 검색 필터에서 일치하는 규칙 사용
일치 규칙은 Directory Server가 속성에 저장된 값을 검색 필터의 값과 비교하는 방법을 지정합니다. 일치하는 규칙은 특성 구문과 관련이 있습니다. 속성 구문이 특성 값의 형식을 정의하는 경우 일치하는 규칙은 해당 형식을 비교하고 인덱싱하는 방법을 정의합니다. 일치하는 규칙은 인덱스 키를 생성하는 방법도 정의합니다.
일치하는 규칙은 OID(오브젝트 식별자)가 있는 스키마 요소입니다. Directory Server의 모든 속성에는 일치하는 규칙이 정의되어 있습니다. 일치하는 규칙 유형에 대한 자세한 내용은 규칙 유형 일치 를 참조하십시오. 검색 필터에 일치하는 규칙을 지정하면 스키마의 속성에 대해 정의된 것과 다른 규칙이 일치하는 규칙을 사용하여 속성 값을 검색할 수 있습니다.
확장 가능한 일치 규칙이 있는 필터에는 다음과 같은 구문이 있습니다.
(<attribute>:<matching_rule>:=<value>)
다음과 같습니다.
-
<attribute
>는 검색한 항목에 속하는 속성입니다(예:cn
,mail
,name
). -
<matching_rule
>는 필수 구문에 따라 일치하는 속성 값에 사용할 규칙의 이름 또는 OID가 포함된 문자열입니다. 예를 들어caseExactMatch
일치 규칙은 다음과 같습니다. -
<value
>는 특성 값 또는 관계형 연산자와 검색할 속성 값입니다.
일치하는 규칙은 검색한 속성의 구문과 호환되어야 합니다. 대소문자를 구분하지 않는 일치 규칙이 있는 속성에 대해 대소문자를 구분하지 않는 검색을 실행할 수 있습니다. 예를 들어 name
속성에 스키마 정의에 사전 정의된 caseIgnoreMatch
일치 규칙이 있습니다. 필터를 사용한 기본 같음 검색 (name=Daniel)
은 DAniel
,daniel
,DanIel
과 같은 name
속성 값이 포함된 항목을 검색합니다. 일치하는 규칙 필터 (name:caseExactMatch:=
를 사용하여 Daniel
)name
속성 값을 포함하는 항목을 검색합니다.
Directory Server에 대해 정의된 많은 일치 규칙은 언어 코드와 관련이 있고 국제화된 데이터 정렬 순서를 설정합니다. 예를 들어 OID 2.16.840.1.113730.3.2.17.1
은 핀란드 데이터 정렬 순서를 식별합니다. 지원되는 국제화된 데이터 정렬 주문의 전체 목록은 언어 순서 일치 규칙 및 언어 하위 문자열 일치 규칙을 참조하십시오.
추가 리소스
3.4.1. 일치하는 규칙 유형
(employeeNumber>=500) 또는 (sn=*erson)와 같이 지정된 일치 규칙이 없는 검색 필터는 스키마 정의의 속성 구문으로 정의된 일치하는 규칙을 사용합니다. 스키마 정의에서 속성에 대해 다음 유형의 일치 규칙을 정의할 수 있습니다.
- 같음
-
EQUALITY
일치 규칙은 두 값을 동일한 일치로 비교하는 방법을 지정합니다. 예를 들어Fred
및FRED
와 같은 문자열을 처리하는 방법 업데이트 작업에서는EQUALITY
규칙을 사용하여 인덱스 키를 생성합니다.(name=Fred)
와 같은 필터를 사용하는 검색 작업은EQUALITY
규칙을 사용하여 필터의 값을 항목의 값과 비교합니다. - 순서
-
한 값이
다른 값보다 크거나 작은지 확인하기 위해 두 값을 비교하는 방법을 지정합니다. 범위를 설정하는 검색 필터(예: (employeeNumber>=500)
또는(attribute Cryostatvalue)
는ING
규칙을 사용합니다. 규칙이 있는 속성의 인덱스는 같음
값을 정렬합니다. - SUBSTR
-
SUBSTR
일치 규칙은 하위 문자열 값을 비교하는 방법을 지정합니다.(name=*ed)
하위 문자열 검색 필터를 사용하여SUBSTR
규칙을 사용합니다. 하위 문자열(하위
) 인덱스는SUBSTR
규칙을 사용하여 인덱스 키를 생성합니다.
같음, 순서 및 하위 문자열 일치 규칙 외에도 검색 필터에서 대략적인 및 기타 확장 가능한 일치 규칙을 지정할 수 있습니다.
디렉터리에는 해당 검색 필터 또는 인덱스 유형에 대한 검색 또는 인덱싱을 지원하기 위해 일치하는 규칙이 필요합니다. 예를 들어 속성에는 해당 속성에 대한 같음 검색 필터 및 eq
인덱스를 지원하기 위해 EQUALITY
일치 규칙이 있어야 합니다. 속성에는 범위 검색 필터와 인덱싱된 범위 검색을 지원하기 위해 속성에 일치하는 규칙과 EQUALITY
일치 규칙이 모두 있어야 합니다.
검색 작업에서 일치하는 규칙이 없는 속성에 대해 검색 필터를 사용하는 경우 Directory Server는 PROTOCOL_ERROR
또는 UNWILLING_TO_PERFORM
을 사용하여 검색 작업을 거부합니다.
규칙 및 사용자 정의 속성 일치
예를 들어 스키마 정의에 caseExactIA5Match
의 EQUALITY
일치 규칙 및 IA5 String(7-bit ASCII) 구문을 사용하여 사용자 지정 특성 MyFirstName
을 생성하려고 합니다. 필터를 사용한 검색 (MyFirstName=
은 Fred
)MyFirstName
값이 Fred
전용인 항목을 반환하지만 Fred ,FRED
및 fred
는 모두 유효한 IA5 문자열 값입니다. 검색에서 특성 값의 모든 변형을 반환하려면 검색 필터에서 일치 규칙 ignoreIA5Match를 사용하거나 일치하는 규칙 (
을 명시적으로 지정하도록 MyFirstName 특성을 정의해야 합니다.
MyFirstName
: caseIgnoreIA5Match
:=Fred)
3.4.2. 일반적으로 사용되는 일치 규칙
다음은 일반적으로 사용되는 일치 규칙 목록입니다.
일치 규칙 | 설명 | OID(오브젝트 식별자) | 호환되는 구문 |
---|---|---|---|
비트 |
비트 | 1.2.840.113556.1.4.803 |
일반적으로 |
비트 단위 |
비트 단위 | 1.2.840.113556.1.4.804 |
일반적으로 |
booleanMatch |
일치하는 값이 | 2.5.13.13 | 부울 |
caseExactIA5Match | 값에 대한 대소문자를 구분하지 않습니다. | 1.3.6.1.4.1.1466.109.114.1 | IA5 Syntax, URI |
caseExactMatch | 값에 대한 대소문자를 구분하지 않습니다. | 2.5.13.5 | 디렉터리 문자열, 인쇄 가능한 문자열, OID |
caseExactOrderingMatch | 대소문자를 구분하는 검색을 허용합니다(및 보다 큰 검색). | 2.5.13.6 | 디렉터리 문자열, 인쇄 가능한 문자열, OID |
caseExactSubstringsMatch | 대소문자를 구분하는 하위 문자열 및 인덱스 검색을 수행합니다. | 2.5.13.7 | 디렉터리 문자열, 인쇄 가능한 문자열, OID |
caseIgnoreIA5Match | 값의 대소문자를 구분하지 않는 비교를 수행합니다. | 1.3.6.1.4.1.1466.109.114.2 | IA5 Syntax, URI |
caseIgnoreIA5SubstringsMatch | 하위 문자열 및 인덱스에서 대소문자를 구분하지 않는 검색을 수행합니다. | 1.3.6.1.4.1.1466.109.114.3 | IA5 Syntax, URI |
caseIgnoreListMatch | 값의 대소문자를 구분하지 않는 비교를 수행합니다. | 2.5.13.11 | 우편 주소 |
caseIgnoreListSubstringsMatch | 하위 문자열 및 인덱스에서 대소문자를 구분하지 않는 검색을 수행합니다. | 2.5.13.12 | 우편 주소 |
caseIgnoreMatch | 값의 대소문자를 구분하지 않는 비교를 수행합니다. | 2.5.13.2 | 디렉터리 문자열, 인쇄 가능한 문자열, OID |
caseIgnoreOrderingMatch | 대소문자를 구분하지 않는 검색(및 보다 큰 검색)을 허용합니다. | 2.5.13.3 | 디렉터리 문자열, 인쇄 가능한 문자열, OID |
caseIgnoreSubstringsMatch | 하위 문자열 및 인덱스에서 대소문자를 구분하지 않는 검색을 수행합니다. | 2.5.13.4 | 디렉터리 문자열, 인쇄 가능한 문자열, OID |
distinguishedNameMatch | 고유 이름 값을 비교합니다. | 2.5.13.1 | 고유 이름(DN) |
generalizedTimeMatch | 일반화된 시간 형식으로 된 값을 비교합니다. | 2.5.13.27 | 일반화된 시간 |
generalizedTimeOrderingMatch | 일반화된 시간 형식의 값에 대해 범위 지정 검색을 허용합니다. | 2.5.13.28 | 일반화된 시간 |
integerMatch | 정수 값을 평가합니다. | 2.5.13.14 | 정수 |
integerOrderingMatch | 정수 값에 대해 범위 검색(및 이하)을 허용합니다. | 2.5.13.15 | 정수 |
keywordMatch | 지정된 검색 값을 특성 값의 문자열과 비교합니다. | 2.5.13.33 | 디렉터리 문자열 |
numericStringMatch | 더 일반적인 숫자 값을 비교합니다. | 2.5.13.8 | 숫자 문자열 |
numericStringOrderingMatch | 더 일반적인 숫자 값에서 범위 검색(이상 이하)을 지원합니다. | 2.5.13.9 | 숫자 문자열 |
numericStringSubstringMatch | 더 일반적인 숫자 값을 비교합니다. | 2.5.13.10 | 숫자 문자열 |
objectIdentifierMatch | OID(오브젝트 식별자) 값을 비교합니다. | 2.5.13.0 | OID(오브젝트 식별자) |
octetStringMatch | 옥텟 문자열 값을 평가합니다. | 2.5.13.17 | 옥텟 문자열 |
octetStringOrderingMatch | 일련의 옥텟 문자열 값에서 범위 검색(이상 이하)을 지원합니다. | 2.5.13.18 | 옥텟 문자열 |
telephoneNumberMatch | 전화 번호 값을 평가합니다. | 2.5.13.20 | 전화 번호 |
telephoneNumberSubstringsMatch | 전화 번호 값에 대해 하위 문자열 및 인덱스 검색을 수행합니다. | 2.5.13.21 | 전화 번호 |
uniqueMemberMatch | Name 및 Optional UID 구문의 어설션 값을 구문의 특성 값과 비교 | 2.5.13.23 | 이름 및 선택적 UID |
wordMatch | 지정된 검색 값을 특성 값의 문자열과 비교합니다. 이 일치 규칙은 대소문자를 구분하지 않습니다. | 2.5.13.32 | 디렉터리 문자열 |
3.4.3. 언어 순서 일치 규칙
국제 검색의 경우 다음과 같은 언어 순서 일치 규칙을 사용할 수 있습니다.
일치 규칙 | OID(오브젝트 식별자) |
---|---|
영어 (Case Exact Ordering Match) | 2.16.840.1.113730.3.3.2.11.3 |
Albanian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.44.1 |
대도시 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.1.1 |
Belorussian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.2.1 |
Bulgarian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.3.1 |
Catalan (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.4.1 |
중국어 - Simplified (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.49.1 |
중국어 - 번식 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.50.1 |
크로아티아 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.22.1 |
체코 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.5.1 |
덴마크 (Case 중요하지 않은 주문 일치) | 2.16.840.1.113730.3.3.2.6.1 |
네덜란드 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.33.1 |
네덜란드 - Belgian (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.34.1 |
영어 - 미국 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.11.1 |
영어 - 캐나다 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.12.1 |
영어 - Irish (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.14.1 |
에스토니아 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.16.1 |
핀란드어 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.17.1 |
프랑스어(Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.18.1 |
French - Belgian (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.19.1 |
프랑스어 - 캐나다 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.20.1 |
프랑스어 - 스위스 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.21.1 |
독일어 (Case 무민한 주문 일치) | 2.16.840.1.113730.3.3.2.7.1 |
독일어 - 오스트리아 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.8.1 |
독일어 - 스위스 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.9.1 |
그리스어 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.10.1 |
히브리어 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.27.1 |
헝가리어 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.23.1 |
아이슬란드 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.24.1 |
이탈리아어 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.25.1 |
이탈리아어 - 스위스 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.26.1 |
일본어 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.28.1 |
한국어 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.29.1 |
Latvian, Lettish (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.31.1 |
리투아니아 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.30.1 |
Macedonian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.32.1 |
Norwegian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.35.1 |
Norwegian - Bokmul (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.36.1 |
Norwegian - Nynorsk (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.37.1 |
폴란드 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.38.1 |
루마니아어 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.39.1 |
러시아어 (Case 무민한 주문 일치) | 2.16.840.1.113730.3.3.2.40.1 |
Serbian - Cyrillic (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.45.1 |
세르비아 - 라틴어 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.41.1 |
Slovak (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.42.1 |
슬로베니아 (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.43.1 |
스페인어 (Case 중요하지 않은 주문 일치) | 2.16.840.1.113730.3.3.2.15.1 |
스웨덴 (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.46.1 |
터키어(Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.47.1 |
Ukrainian (Case insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.48.1 |
추가 리소스
3.4.4. 언어 하위 문자열 일치 규칙
국제 검색의 경우 다음과 같은 언어 하위 문자열 일치 규칙을 사용할 수 있습니다.
일치 규칙 | OID(오브젝트 식별자) |
---|---|
영어 (Case Exact Substring 일치) | 2.16.840.1.113730.3.3.2.11.3.6 |
Albanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.44.1.6 |
대도시 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.1.1.6 |
Belorussian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.2.1.6 |
Bulgarian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.3.1.6 |
Catalan (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.4.1.6 |
중국어 - Simplified (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.49.1.6 |
중국어 - 번식 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.50.1.6 |
Croatian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.22.1.6 |
체코 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.5.1.6 |
Danish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.6.1.6 |
네덜란드 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.33.1.6 |
네덜란드 - Belgian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.34.1.6 |
영어 - 미국 (Case Insensitive Substring 일치) | 2.16.840.1.113730.3.3.2.11.1.6 |
영어 - 캐나다 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.12.1.6 |
English - Irish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.14.1.6 |
Estonian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.16.1.6 |
핀란드어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.17.1.6 |
프랑스어(Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.18.1.6 |
French - Belgian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.19.1.6 |
프랑스어 - 캐나다 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.20.1.6 |
프랑스어 - 스위스 (Case Insensitive Substring 일치) | 2.16.840.1.113730.3.3.2.21.1.6 |
독일어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.7.1.6 |
독일어 - 오스트리아n (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.8.1.6 |
독일어 - 스위스 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.9.1.6 |
그리스어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.10.1.6 |
히브리어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.27.1.6 |
헝가리어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.23.1.6 |
아이슬란드 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.24.1.6 |
이탈리아어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.25.1.6 |
이탈리아어 - 스위스 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.26.1.6 |
일본어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.28.1.6 |
한국어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.29.1.6 |
Latvian, Lettish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.31.1.6 |
리투아니아 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.30.1.6 |
Macedonian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.32.1.6 |
Norwegian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.35.1.6 |
Norwegian - Bokmul (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.36.1.6 |
Norwegian - Nynorsk (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.37.1.6 |
폴란드 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.38.1.6 |
Romanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.39.1.6 |
러시아어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.40.1.6 |
Serbian - Cyrillic (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.45.1.6 |
세르비아 - 라틴어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.41.1.6 |
Slovak (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.42.1.6 |
슬로베니아 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.43.1.6 |
스페인어 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.15.1.6 |
스웨덴 (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.46.1.6 |
터키어(Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.47.1.6 |
Ukrainian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.48.1.6 |
추가 리소스
3.4.5. inchainMatch
일치 규칙을 사용하여 중첩된 그룹에서 LDAP 항목의 멤버십 찾기
inchainMatch
일치 규칙은 중첩된 그룹에서 LDAP 항목의 멤버십을 찾는 검색 필터에 대해 확장 가능한 일치 항목입니다. Directory Server는 OID(오브젝트 식별자) 1.2.840.113556.1.4.1941
과 chainMatch에서
사람이 읽을 수 있는 이름을 모두 지원합니다.
일치하는 규칙의 사용은 Distinguished Name(DN) 구문을 사용한 속성으로 제한됩니다. inchainMatch
일치 규칙을 사용하여 다음 검색을 수행할 수 있습니다.
-
검색 필터
(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)
는 사용자jdoe
가 멤버인 모든 직접 또는 간접 그룹을 찾습니다. -
검색 필터
(manager:1.2.840.113556.1.4.1941:=uid=jsmith,ou=people,dc=example,dc=com)
는 관리자가jsmith
인 모든 직접 또는 간접 사용자를 찾습니다. -
검색 필터
(parentOrganization:1.2.840.113556.1.4.1941:=ou=ExampleCom,ou=europe,dc=example,dc=com)
는Example Com
이 속한 모든 직접 또는 간접 조직을 찾습니다. -
검색 필터
(memberof:1.2.840.113556.1.4.1941:=cn=Marketing,ou=groups,dc=example,dc=com)
는Marketing
그룹의 모든 직접 또는 간접 멤버를 찾습니다.
성능상의 이유로 inchainMatch
에서 사용하는 멤버인manager
,parentOrganization
,
속성을 인덱싱해야 합니다.
member
of
Directory Server는 In Chain
플러그인을 통해 기본적으로 inchainMatch
일치 규칙을 활성화합니다. 그러나 inchainMatch
는 컴퓨팅 비용이 많이 들고 Directory Manager만 기본적으로 inchainMatch
를 사용할 수 있는 권한을 갖습니다. 다른 사용자에게 권한을 부여하려면 oid=1.2.840.113556.1.4.1941,cn=features,cn=config
항목에서ACI(액세스 제어 명령)를 수정합니다. 자세한 내용은 사용자 항목에 대한 inchainMatch
일치 규칙 활성화를 참조하십시오.
3.4.5.1. 사용자 항목에 대한 inchainMatch
일치 규칙 활성화
inchainMatch가 처리하는 데 비용이 많이 들기 때문에 기본적으로 Directory Manager에는
일치 규칙을 사용할 수 있는 권한이 있습니다. 다른 사용자에게 권한을 부여하려면 inchainMatch
oid=1.2.840.113556.1.4.1941,cn=features,cn=config
항목에서 액세스 제어 명령(ACI)을 수정합니다. 다음 절차에서는 admin
사용자에게 읽기
및 검색
권한을 부여합니다.
사전 요구 사항
-
uid=admin,ou=people,dc=example,dc=com
사용자 항목이 있습니다. -
uid=jdoe,ou=people,dc=example,dc=com
사용자 항목이 있으며cn=Marketing_Germany,ou=groups,dc=example,dc=com
그룹에 속합니다. -
cn=Marketing_Germany,ou=groups,dc=example,dc=com
그룹은cn=Marketing_EU,ou=groups,dc=example,dc=com
그룹의 중첩 그룹입니다.
절차
oid=1.2.840.113556.1.4.1941,cn=features,cn=config
항목에서 기본 ACI를 대체하여uid=admin,ou=people,dc=example,dc=com
에 대한 Grand읽기
및검색
권한:# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: oid=1.2.840.113556.1.4.1941,cn=features,cn=config changetype: modify replace: aci aci: (targetattr != "aci")(version 3.0; acl "InChain Matching Rule"; allow( read, search ) userdn = "ldap:///uid=admin,ou=people,dc=example,dc=com";)
참고여러 사용자에게 권한을 부여하려면 이러한 사용자를 그룹에 추가하고 ACI의 바인딩 규칙에서
groupdn
을 키워드로 설정합니다. 자세한 내용은 그룹 기반 액세스 정의를 참조하십시오.
검증
uid=jdoe,ou=people,dc=example,dc=com
사용자가 속하는 그룹을 검색합니다.$ ldapsearch -D "uid=admin,ou=people,dc=example,dc=com" ldap://server.example.com -W -xLL -b "dc=example,dc=com" "(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)" dn dn: cn=Marketing_EU,ou=groups,dc=example,dc=com dn: cn=Marketing_Germany,ou=groups,dc=example,dc=com
3.4.5.2. inchainMatch 일치 규칙 비활성화
inchainMatch
일치 규칙을 구현하기 위해 Directory Server는 기본적으로 활성화된 In Chain
플러그인을 사용합니다. inchainMatch
를 비활성화하려면 dsconf
유틸리티를 사용하여 In Chain
플러그인을 비활성화합니다.
절차
In Chain
플러그인이 활성화되어 있는지 확인합니다.# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin show 'In Chain' dn: cn=In Chain,cn=plugins,cn=config cn: In Chain nsslapd-pluginDescription: inchain matching rule plugin nsslapd-pluginEnabled: on ...
In Chain
플러그인을 비활성화합니다.# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin set --enabled off 'In Chain' Successfully changed the cn=In Chain,cn=plugins,cn=config
명령은 모든 사용자에 대해
inchainMatch
일치 규칙을 비활성화합니다.
검증
Directory Server가
In Chain
플러그인을 비활성화했는지 확인합니다.# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin show 'In Chain' dn: cn=In Chain,cn=plugins,cn=config cn: In Chain nsslapd-pluginDescription: inchain matching rule plugin nsslapd-pluginEnabled: off ...
4장. LDAP 검색(ldapsearch
) 예
다음 예제에서는 디렉터리를 통해 검색하는 데 사용되는 가장 일반적인 'ldapsearch'es를 제공합니다.
사전 요구 사항
- 디렉터리의 모든 항목을 검색합니다.
-
검색 및 읽기 작업에 대한 익명 액세스를 지원하도록 디렉터리를 구성했습니다. 따라서 명령에서 바인딩 정보를 제공하기 위해
-W
및-D
옵션을 사용할 필요가 없습니다. 익명 액세스에 대한 자세한 내용은 익명 액세스 권한을 참조하십시오. - 서버는 기본 포트 389를 사용합니다. 검색 요청에 지정할 필요가 없습니다.
-
서버에는
server.example.com
호스트 이름이 있습니다. -
포트
636
에서 서버에 대해 TLS를 활성화했습니다. 기본 LDAPS 포트 번호입니다. -
Directory Server는 모든 데이터를
dc=example,dc=com
접미사 아래에 저장합니다.
모든 항목 반환
다음 LDAP 검색에서는 디렉터리의 모든 항목을 반환합니다.
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)"
(objectclass=*)
검색 필터를 사용하여 디렉터리의 모든 항목을 반환합니다. 각 항목에는 오브젝트 클래스가 있어야 하며 objectclass
속성은 항상 인덱싱됩니다.
명령줄에서 검색 필터 지정
필터를 따옴표로 묶어 명령에 직접 검색 필터를 지정할 수 있습니다("필터"). 명령에 필터를 제공하는 경우 -f
옵션을 지정하지 마십시오. 예를 들어 "cn=babs jensen"
을 지정하려면 다음을 입력합니다.
# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "cn=babs jensen"
Root DSE 항목 검색
루트 DSE는 로컬 Directory Server에서 지원하는 모든 접미사를 포함하여 디렉터리 서버 인스턴스에 대한 정보가 포함된 특수 항목입니다. 검색 기반 ""
, 검색 범위 기본
, 필터 "objectclass=*"
를 제공하여 이 항목을 검색합니다. 예를 들면 다음과 같습니다.
# ldapsearch -H ldap://server.example.com -x -b "" -s base "objectclass=*"
스키마 항목 검색
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 "+"
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"
이 명령은 범위를 지정하는 데 -s
옵션이 제공되지 않았기 때문에 기본 범위 하위
를 사용합니다.
속성의 하위 집합 표시
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
운영 속성 검색
운영 속성은 Directory Server가 자체적으로 설정하는 특수 속성입니다. Directory Server는 운영 특성을 사용하여 액세스 제어 지침 처리와 같은 유지 관리 작업을 수행합니다. 이러한 속성은 이 항목이 처음 생성된 시간과 이를 생성한 사용자의 이름과 같은 항목에 대한 특정 정보를 표시합니다.
항목의 개체 클래스에 대해 특성을 구체적으로 정의하더라도 디렉터리의 모든 항목에서 작동 속성을 사용할 수 있습니다.
일반 ldapsearch
명령은 작동 속성을 반환하지 않습니다. RFC3673 에 따르면 검색 요청의 모든 운영 속성을 반환하려면 +
를 사용합니다.
# 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=*)" "*" aci
쉘이 해석되지 않도록 별표(*)를 따옴표로 묶어야 합니다.
파일을 사용하여 검색 필터 지정
명령줄에서 검색 필터를 입력하는 대신 파일에 검색 필터를 지정할 수 있습니다.
파일의 개별 행에 대해 각 검색 필터를 지정합니다. ldapsearch
명령은 파일에 표시되는 순서대로 각 검색을 실행합니다.
예를 들어 파일에는 다음 필터가 포함되어 있습니다.
sn=example givenname=user
ldapsearch
명령은 먼저 ' 예
'로 설정된 모든 항목을 찾은 다음 지정된 이름이
user
로 설정된 모든 항목을 찾습니다. 검색 요청이 두 검색 기준과 일치하는 항목을 발견하면 항목이 두 번 반환됩니다.
다음 검색에서 필터는 searchdb
라는 파일에 지정됩니다.
# ldapsearch -H ldap://server.example.com -x -f searchdb
검색 줄 끝에 속성 이름을 지정하여 반환된 속성 세트를 제한할 수 있습니다. 예를 들어 다음 ldapsearch
명령은 검색을 수행하지만 각 항목의 DN 및 지정된 이름
및 sn
속성만 반환합니다.
# ldapsearch -H ldap://server.example.com -x -f searchdb sn givenname
검색 필터에 쉼표가 포함된 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=*"
필터에서 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
클라이언트 인증서를 사용하여 Directory Server에 바인딩
인증서 기반 인증에 대한 자세한 내용은 인증서 기반 인증 구성을 참조하십시오.
언어 일치 규칙으로 검색
검색 필터에서 일치하는 규칙을 명시적으로 제출하려면 속성 뒤에 일치하는 규칙을 삽입합니다.
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
국제화된 검색을 수행하는 더 많은 예 는 국제화된 디렉토리 검색을 참조하십시오.
사용자가 속하는 그룹 검색
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
inchainMatch
일치 규칙이 있는 검색은 익명 액세스를 지원하지 않습니다. inchainMatch
일치 규칙을 사용하는 방법에 대한 자세한 내용은 inchainMatch
일치 규칙 사용을 참조하여 LDAP 항목의 상위 항목을 찾습니다.
그룹 멤버 검색
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
inchainMatch
일치 규칙이 있는 검색은 익명 액세스를 지원하지 않습니다. inchainMatch
일치 규칙을 사용하는 방법에 대한 자세한 내용은 inchainMatch
일치 규칙 사용을 참조하여 LDAP 항목의 상위 항목을 찾습니다.
비트 필드 값으로 속성 검색
비트 단위 검색에서는 비트별 AND
또는 비트별 또는 일치 규칙을 사용하여 비트 필드인 속성에서 비트 검색 작업을 수행합니다.
bit 필드의 값이 있는 속성은 LDAP에서 일반적이지 않습니다. 기본 디렉터리 서버 스키마는 비트 필드를 특성 구문으로 사용하지 않습니다. 그러나 여러 LDAP 구문은 정수 스타일 값을 지원합니다. 비트 필드 값을 사용하도록 사용자 지정 속성을 정의할 수 있습니다. 애플리케이션에서는 사용자 지정 속성을 사용하여 비트 필드 값에 대해 비트별 작업을 수행할 수 있습니다.
비트 및
일치 규칙(1.2.840.113556.1.4.803
)은 어설션 값에 지정된 비트가 비트 필드 속성 값에 설정되어 있는지 확인합니다. 이는 동등한 검색과 유사합니다. 다음 예제에서는 userAccountControl
값을 2
를 나타내는 비트로 설정합니다.
"(UserAccountControl:1.2.840.113556.1.4.803:=2)"
다음 예제에서는 userAccountControl
값에 값 6
(비트 2
및 4
)에 설정된 모든 비트가 있어야 함을 보여줍니다.
"(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)"
Samba 파일 서버 사용과 같은 Windows-Linux 통합과 함께 비트별 검색을 사용할 수 있습니다.
5장. 리소스 제한을 통해 검색 성능 개선
데이터베이스의 모든 항목을 검색하면 대규모 디렉터리의 서버 성능에 부정적인 영향을 미칠 수 있습니다. 대규모 데이터베이스에서 효과적인 인덱싱이 성능을 개선하기 위해 검색 범위를 충분히 감소하지 못할 수 있습니다.
사용자 및 클라이언트 계정에 대한 제한을 설정하여 총 항목 수 또는 개별 검색에 소요된 총 시간을 줄일 수 있습니다. 이렇게 하면 검색에 응답성이 향상되고 전체 서버 성능이 향상됩니다.
5.1. 대규모 디렉터리에 대한 작업 제한 검색
클라이언트 애플리케이션 바인딩에서 디렉터리에 대한 특수 운영 특성 값을 사용하여 검색 작업에 대한 서버 제한을 제어할 수 있습니다. 다음 검색 작업 제한을 설정할 수 있습니다.
-
Look through
limit은 검색 작업을 검사할 수 있는 항목 수를 지정합니다. -
크기
제한은 검색 작업에 대한 응답으로 서버가 클라이언트 애플리케이션에 반환하는 최대 항목 수를 지정합니다. -
시간
제한은 서버가 검색 작업을 처리하는 데 사용할 수 있는 최대 시간을 지정합니다. -
Idle 시간
제한은 연결이 삭제되기 전에 서버에 대한 연결을 유휴 상태로 설정할 수 있는 시간을 지정합니다. -
범위 제한은
범위를 사용하여 검색을 위해 특별히 별도의조회-
처리 제한을 지정합니다.
글로벌 서버 구성에서 클라이언트 애플리케이션에 설정된 리소스 제한이 설정된 기본 리소스 제한보다 우선합니다.
디렉터리 관리자는 범위 검색을 제외하고 기본적으로 무제한 리소스를 받습니다.
5.2. 인덱스 검사 제한을 사용하여 성능 개선
큰 인덱스의 경우 인덱스와 일치하는 모든 검색을 인덱싱되지 않은 검색으로 처리하는 것이 효율적입니다.For large indexes, it is efficient to treat any search which matches the index as an unindexed search. 검색 작업은 디렉터리 자체 외에 디렉터리의 크기가 거의 없는 인덱스를 통해 검색하는 대신 결과를 처리하기 위해 전체 디렉토리를 확인해야 합니다.
추가 리소스
5.3. 세분화된 ID 목록 크기
대규모 데이터베이스에서 일부 쿼리는 많은 수의 CPU 및 RAM 리소스를 사용할 수 있습니다. 성능을 개선하기 위해 nsslapd-idlistscanlimit
특성을 사용하여 데이터베이스의 모든 인덱스에 적용되는 기본 ID 검사 제한을 설정할 수 있습니다. 그러나 특정 인덱스에 대한 제한을 정의하거나 ID가 정의되지 않은 목록을 사용하는 것이 유용합니다. nsIndexIDListScanLimit
특성을 사용하여 다양한 유형의 검색 필터에 대한 ID 목록 검사 제한에 대한 개별 설정을 설정할 수 있습니다.
5.4. 명령줄을 사용하여 사용자 및 글로벌 리소스 제한 설정
명령줄을 사용하여 사용자 수준
리소스 제한, 글로벌 리소스
제한, 간단한 페이지
링 및 범위 검색과 같은 특정 유형의 검색에
대한 제한을 설정할 수 있습니다. 개별 항목에 대한 사용자 수준 속성을 설정할 수 있으며 전역 구성 속성은 적절한 서버 구성 영역에 설정됩니다.
ldapmodify
명령을 사용하여 각 항목에 대해 다음과 같이 언급된 작동 속성을 설정할 수 있습니다.
look-through
look-through
제한 특성을 사용하여 검색 작업을 검사할 항목 수를 지정할 수 있습니다. 특성의 값을-1
로 설정하면 제한이 없음을 나타냅니다.-
사용자 수준 특성:
nsLookThroughLimit
글로벌 구성:
-
속성:
nsslapd-lookthroughlimit
항목:
cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config
#
dsconf instance backend config set --lookthroughlimit value
-
속성:
-
사용자 수준 특성:
페이지가 지정된 조회
paged look-through
limit 특성을 사용하여 간단한 페이지가 지정된 검색 작업을 검사할 항목 수를 지정할 수 있습니다. 특성의 값을-1
로 설정하면 제한이 없음을 나타냅니다.-
사용자 수준 특성:
nsPagedLookThroughLimit
글로벌 구성:
-
속성:
nsslapd-pagedlookthroughlimit
항목:
cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config
#
dsconf instance backend config set --pagedlookthroughlimit value
-
속성:
-
사용자 수준 특성:
크기
size
limit 특성을 사용하여 검색 작업에 대한 응답으로 서버가 클라이언트 애플리케이션에 반환하는 최대 항목 수를 지정할 수 있습니다. 특성의 값을-1
로 설정하면 제한이 없음을 나타냅니다.-
user-level 속성:
nsSizeLimit
글로벌 구성:
-
속성:
nsslapd-sizelimit
항목:
cn=config
#
dsconf instance config replace nsslapd-sizelimit value
nsSizeLimit
속성을 사용자 항목에 추가하고 예를 들어500
개의 항목 검색 반환 크기 제한을 지정할 수 있습니다.#
ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
... dn: uid=user_name,ou=People,dc=example,dc=com changetype: modify add: nsSizeLimit nsSizeLimit: 500 ...
-
속성:
-
user-level 속성:
페이지 크기
paged size
limit 특성을 사용하여 서버가 간단한 페이지 검색 작업에 대해 클라이언트 애플리케이션으로 반환하는 최대 항목 수를 지정할 수 있습니다. 특성의 값을-1
로 설정하면 제한이 없음을 나타냅니다.-
사용자 수준 특성:
nsPagedSizeLimit
글로벌 구성:
-
속성:
nsslapd-pagedsizelimit
항목:
cn=config
#
dsconf instance config replace nsslapd-pagedsizelimit value
-
속성:
-
사용자 수준 특성:
time
시간 제한 특성을 사용하여 서버에서 검색 작업을 처리하는 데 사용할 수 있는 최대
시간을
지정할 수 있습니다. 특성의 값을-1
로 설정하면 시간 제한이 없음을 나타냅니다.-
사용자 수준 속성:
nsTimeLimit
글로벌 구성:
-
속성:
nsslapd-timelimit
항목:
cn=config
#
dsconf instance config replace nsslapd-timelimit value
-
속성:
-
사용자 수준 속성:
유휴 시간 초과
유휴 시간
초과
특성을 사용하여 연결을 삭제하기 전에 서버에 대한 연결을 유휴 상태로 설정할 수 있는 시간(초)을 지정할 수 있습니다. 특성의 값을-1
로 설정하면 제한이 없음을 나타냅니다.-
user-level 속성:
nsidletimeout
글로벌 구성:
-
속성:
nsslapd-idletimeout
항목:
cn=config
#
dsconf instance config replace nsslapd-idletimeout value
-
속성:
-
user-level 속성:
ID 목록 검사
검색 결과를 위해 인덱스 파일에서 로드된 최대 항목 ID 수를 지정할 수 있습니다. ID 목록 크기가 최대 ID 수보다 크면 검색에서 인덱스 목록을 사용하지 않지만 검색을 인덱싱되지 않은 검색으로 처리하고 전체 데이터베이스를 확인합니다.
-
사용자 수준 특성:
nsIDListScanLimit
글로벌 구성:
-
특성:
nsslapd-idlistscanlimit
항목:
cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config
#
dsconf instance backend config set --idlistscanlimit value
-
특성:
-
사용자 수준 특성:
페이지가 지정된 ID 목록 검사
페이지 ID
목록 검사 제한을 사용하여 페이지링된 검색 작업에 대해 특히 검색 결과에 대해 인덱스 파일에서 로드된 항목 ID
의 최대 수를 지정할 수 있습니다.-
사용자 수준 특성:
nsPagedIDListScanLimit
글로벌 구성:
-
특성:
nsslapd-pagedidlistscanlimit
항목:
cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config
#
dsconf instance backend config set --pagedidlistscanlimit value
-
특성:
-
사용자 수준 특성:
범위 조회
범위
조회
제한을 사용하여 범위 검색 작업을 검사할 항목 수를 지정할 수 있습니다. 특성의 값을-1
로 설정하면 제한이 없음을 나타냅니다.참고범위 검색은
greater-than
,equal-to-or-greater-than
,less-than
또는equal-to-less-than
연산자를 사용하여 검색한 것입니다.-
사용자 수준 속성:
사용할 수 없음
글로벌 구성:
-
속성:
nsslapd-rangelookthroughlimit
항목:
cn=config,cn=ldbm 데이터베이스,cn=plugins,cn=config
#
dsconf instance backend config set ----rangelookthroughlimit value
참고사용자가 설정을 변경하지 못하도록 액세스 제어 목록을 설정할 수 있습니다.
-
속성:
-
사용자 수준 속성:
추가 리소스
5.5. 익명 바인딩에 리소스 제한 설정
리소스 제한이 있는 템플릿 사용자 항목을 생성한 다음 리소스 제한이 사용자 항목에 설정되고 익명 바인딩에 연결된 사용자 항목이 없기 때문에 이 템플릿을 익명 바인딩에 적용하여 익명 바인딩에 대한 리소스 제한을 구성할 수 있습니다.
사전 요구 사항
- 템플릿 항목이 생성되었습니다.
절차
익명 바인딩에 적용할 리소스 제한을 설정합니다.
#
ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
... dn: cn=anonymous_template,ou=people,dc=example,dc=com objectclass: nsContainer objectclass: top cn: anonymous_template nsSizeLimit: 250 nsLookThroughLimit: 1000 nsTimeLimit: 60 ...참고성능상의 이유로 템플릿은 항목 캐시를 사용하지 않는
cn=config
접미사가 아닌 일반 백엔드에 있어야 합니다.복제 토폴로지의 모든 공급업체에서 템플릿 항목의
DN
을 가리키는nsslapd-anonlimitsdn
매개변수를 서버 구성에 추가합니다.#
dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-anonlimitsdn="cn=anonymous_template,ou=people,dc=example,dc=com"
5.6. 범위 검색을 위한 성능 개선
범위 검색(모든 ID 검색)은 operators를 사용하여 디렉토리 내의 항목의 전체 하위 집합을 검색하고 반환하는 데 bracket을 설정합니다. 범위 검색은 디렉터리의 모든 항목을 평가하여 항목이 제공된 범위 내에 있는지 확인할 수 있습니다.
예를 들어 1월 1일 자정 이후에 수정된 모든 항목을 검색하려면 다음 명령을 실행합니다.
# (modifyTimestamp>=20210101010101Z)
범위 검색이 모든 ID 검색으로 전환되지 않도록 하려면 look-through
제한을 사용할 수 있습니다. 이 제한을 사용하면 전체 성능을 개선하고 범위 검색 결과를 가속화할 수 있습니다. 그러나 Directory Manager와 같은 일부 클라이언트 또는 관리 사용자는 조회
제한을 설정할 수 없습니다. 이 경우 범위 검색을 완료하는 데 몇 분 정도 걸리거나 무기한 계속될 수 있습니다.
그러나 별도의 범위 조회
제한을 설정할 수 있습니다. 이 제한을 설정하면 클라이언트 및 관리 사용자는 높은 조회
제한을 가질 수 있으며 잠재적으로 성능 페어링 범위 검색에 적절한 제한을 설정할 수 있습니다.
nsslapd-rangelookthroughlimit
특성을 사용하여 이러한 설정을 구성할 수 있습니다. 기본값은 5000입니다.
별도의 범위 조회
제한을 7500으로 설정하려면 다음 명령을 실행합니다.
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --rangelookthroughlimit 7500