Sun Java 로고     이전      목차      색인      다음     

Sun 로고
Sun Java(TM) System Directory Server 5 2004Q2 관리 설명서 

2장
디렉토리 항목 작성

이 장에서는 Directory Server 콘솔 및 LDAP 명령줄 유틸리티를 사용하여 디렉토리 내용을 관리하는 방법에 대해 설명합니다. 선택 사항인 속성 암호화 기능을 사용하여 속성이 저장되는 방법 및 DSML을 사용하여 디렉토리에 액세스하는 방법에 대해서도 설명합니다. 디렉토리 배포를 계획할 때 디렉토리에 저장할 데이터 유형을 결정해야 합니다. 항목을 작성하고 기본 스키마를 수정하기 전에 먼저 Directory Server Deployment Planning Guide의 2장, "Planning and Accessing Directory Data"를 읽어 보십시오.

이 장에서는 사용자가 LDAP 스키마와 이 스키마에서 정의하는 객체 클래스와 속성에 대해 어느 정도 알고 있다고 가정합니다. Directory Server에서 제공하는 모든 객체 클래스 및 속성 정의와 스키마에 대한 소개는 Directory Server Administration Reference의 "Object Class Reference" 장과 "Attribute Reference" 장을 참조하십시오.

디렉토리를 수정하려면 적절한 ACI (Access Control Instruction)가 정의되어 있어야 합니다. 자세한 내용은 6장, "액세스 제어 관리"를 참조하십시오.

이 장은 다음 내용으로 구성되어 있습니다.


구성 항목

Directory Server는 모든 구성 정보를 다음 파일에 저장합니다.

ServerRoot/slapd-serverID/config/dse.ldif

이 파일은 LDIF (LDAP Data Interchange Format) 형식입니다. LDIF는 항목, 속성 및 해당 값을 텍스트로 표현하며, RFC2849 (http://www.ietf.org/rfc/rfc2849)에 설명된 표준 형식입니다. dse.ldif 파일의 Directory Server 구성은 다음과 같은 항목으로 이루어져 있습니다.

Directory Server에서는 LDAP를 통해 모든 구성 설정을 읽고 쓸 수 있습니다. 기본적으로 디렉토리의 cn=config 분기는 관리 서버에 정의된 디렉토리 관리자(directory administrator) 및 디렉토리 관리자(directory manager)만 액세스할 수 있습니다. 관리자 사용자는 구성 항목을 다른 디렉토리 항목처럼 보고 수정할 수 있습니다.

cn=config 항목 아래에 새 항목을 작성할 경우 일반 항목보다 확장성이 낮은 데이터베이스인 dse.ldif 파일에 항목이 저장되므로 바람직하지 않습니다. 많은 항목, 특히 자주 업데이트되는 항목을 cn=config에 저장하면 성능이 저하됩니다. 하지만 구성 정보를 중앙 집중화하기 위해 복제 관리자(공급자 바인드 DN) 항목과 같은 특수 사용자 항목을 cn=config 아래에 저장하는 것은 도움이 될 수 있습니다.

콘솔에서 구성 수정

Directory Server 콘솔의 최상위 구성 탭을 사용하여 구성을 수정하는 것이 가장 좋습니다. 이 탭의 패널과 대화 상자는 신속하고 효율적으로 구성을 설정할 수 있도록 도와주는 작업 기반의 컨트롤을 제공합니다. 또한 콘솔 인터페이스는 사용자를 대신하여 복잡하고 상호 종속된 구성을 관리합니다.

콘솔의 구성 인터페이스에 대해서는 설명서 내의 "콘솔에서..."로 시작되는 절차에서 설명합니다. 이 절차에서는 구성 탭의 패널과 대화 상자를 사용하여 특정 관리 작업을 수행하는 방법을 소개합니다. 변경 사항을 적용하기 위해 서버를 다시 시작해야 하는 경우 및 구성 저장 방법은 인터페이스 자체에서 명확히 지정합니다.

명령줄에서 구성 수정

LDAP를 통해 cn=config 하위 트리를 액세스할 수 있으므로 ldapsearch, ldapmodify 및 ldapdelete 명령을 사용하여 서버 구성을 보고 수정할 수 있습니다. cn=config 항목 및 모든 하위 항목은 명령줄에서 항목 관리에 설명된 절차와 LDIF 형식을 사용하여 수정할 수도 있습니다.

하지만 각 항목의 의미, 속성 용도 및 허용되는 값을 명백히 이해해야 합니다. 이러한 중요 고려 사항에 대해서는 설명서 내의 "명령줄에서..."로 시작되는 절차에서 설명합니다. 이 절차에서는 설정할 수 있는 구성 항목 및 속성의 예를 소개합니다. 허용되는 값의 범위를 비롯한 모든 구성 항목 및 속성에 대한 자세한 내용은 Directory Server Administration Reference를 참조하십시오.

따라서 콘솔보다 명령줄에서 구성을 수정하는 것이 더 복잡하지만 콘솔에서 사용할 수 없는 구성 설정의 경우에는 명령줄 절차만 제공됩니다. 명령줄 도구를 사용하는 스크립트를 작성함으로써 명령줄 절차를 사용하여 구성 작업을 자동화할 수도 있습니다.

dse.ldif 파일 수정

dse.ldif 파일에는 서버를 시작하거나 다시 시작할 때 서버에서 읽고 사용하는 구성이 저장되어 있습니다. 이 파일의 LDIF 내용은 cn=config 항목과 해당 하위 트리이며, 사용자가 설치 중에 정의한 시스템에서만 파일을 읽고 쓸 수 있습니다.

파일 내용을 직접 편집하여 구성을 수정할 경우 오류 발생 가능성이 커지므로 바람직하지 않습니다. 다음과 같은 동작에 주의해야 합니다.


콘솔에서 항목 관리

Directory Server 콘솔의 디렉토리 탭과 항목 편집기 대화 상자를 사용하여 개별 항목을 추가, 수정 또는 삭제할 수 있습니다. 동시에 여러 개의 항목에 대해 작업하려면 콘솔을 사용한 대량 작업을 참조하십시오.

Directory Server 콘솔을 시작하고 사용자 인터페이스를 탐색하는 방법은 Directory Server 콘솔 사용을 참조하십시오.

디렉토리 항목 작성

Directory Server 콘솔은 디렉토리 항목을 작성하기 위한 다양한 사용자 정의 템플리트를 제공합니다. 각각의 템플리트는 특정 객체 클래스 유형의 사용자 정의 편집기입니다. 표 2-1에서는 각 사용자 정의 편집기에 사용된 객체 클래스를 보여줍니다.

표 2-1 항목 템플리트 및 해당 객체 클래스 

템플리트

객체 클래스

사용자

inetOrgPerson (작성 및 편집용)
organizationalPerson (편집용)
person (편집용)

그룹

groupOfUniqueNames 및 동적 그룹과 인증서 그룹에 사용할 수 있는 기타 객체 클래스

조직 구성 단위

organizationalUnit

역할

nsRoleDefinition 및 관리된 역할, 필터링된 역할 또는 중첩된 역할에 따른 기타 객체 클래스

서비스 클래스

cosSuperDefinition 및 클래스 서비스 유형에 따른 기타 객체 클래스

비밀번호 정책

passwordPolicy

참조

referral

사용자 정의 편집기에는 해당 객체 클래스의 자주 사용되는 일부 선택 사항 속성과 모든 필수 속성을 나타내는 필드가 포함되어 있습니다. 이런 템플리트 중 하나를 사용하여 항목을 작성하려면 사용자 정의 편집기에서 항목 작성에 설명된 지침에 따라 수행합니다. 다른 유형의 항목을 작성하려면 다른 유형의 항목 작성을 참조하십시오.

사용자 정의 편집기에서 항목 작성

  1. Directory Server 콘솔의 최상위 디렉토리 탭에서 디렉토리 트리를 확장하여 새 항목의 부모가 될 항목을 표시합니다.
  2. 부모 항목을 마우스 오른쪽 버튼으로 누르고 새로 만들기 메뉴 항목을 선택한 다음 하위 메뉴에서 사용자, 그룹, 조직 구성 단위, 역할, 서비스 클래스, 비밀번호 정책, 참조 등의 항목 유형을 선택합니다. 또는, 부모 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 객체 > 새로 만들기 메뉴에서 항목 유형을 선택할 수도 있습니다. 선택한 항목 유형의 사용자 정의 편집기 대화 상자가 표시됩니다.
  3. 사용자 정의 편집기의 왼쪽 열에는 탭 목록이 있고 오른쪽에는 각 탭의 필드가 표시됩니다. 기본적으로 모든 사용자 정의 편집기는 새 항목의 이름 및 설명 필드가 있는 최상위 사용자 또는 일반 탭이 선택된 상태로 열립니다.

    예를 들어 아래 그림은 사용자 항목의 사용자 정의 편집기를 보여줍니다.

    그림 2-1 Directory Server 콘솔 - 사용자 항목의 사용자 정의 편집기
    이름, 사용자 아이디, 비밀번호, 전화 번호 등의 사용자 정보 입력 필드를 보여주는 새 사용자 만들기 창

  4. 사용자 정의 편집기 필드에 제공할 속성 값을 입력합니다. 필드 이름 옆에 별표(*)로 표시된 모든 필수 속성에 값을 입력해야 합니다. 다른 필드는 비워둘 수 있습니다. 여러 값을 허용하는 필드에서는 Return을 입력하여 값을 구분할 수 있습니다.
  5. 각 항목 유형의 사용자 정의 편집기에 있는 특정 필드에 대한 자세한 내용을 보려면 도움말 버튼을 누릅니다. 사용자 및 조직 구성 단위 편집기의 언어 탭에 대한 자세한 내용은 언어 지원 속성 설정을 참조하십시오.

    그룹, 역할 및 서비스 클래스 항목 작성에 대한 자세한 내용은 5장, "Identity 및 역할 관리"를 참조하십시오. 비밀번호 정책 작성에 대한 자세한 내용은 7장, "사용자 계정 및 비밀번호 관리"를 참조하십시오. 참조 작성에 대한 자세한 내용은 참조 설정을 참조하십시오.

  6. 확인을 눌러 새 항목을 작성하고 사용자 정의 편집기 대화 상자를 닫습니다. 디렉토리 트리에 새 항목이 표시됩니다.
  7. 사용자 정의 편집기 대화 상자에서 각 객체 클래스의 선택 사항 속성 필드를 모두 제공하지는 않습니다. 사용자 정의 편집기에 표시되지 않은 선택 사항 속성을 추가하려면 일반 편집기에서 항목 수정에 설명된 지침에 따라 수행합니다.

다른 유형의 항목 작성

표 2-1에 열거된 객체 클래스 이외의 객체 클래스 항목을 작성하려면 아래 단계에 따라 수행합니다. 이 절차를 사용하여 디렉토리 스키마에 정의한 사용자 정의 객체 클래스 항목을 작성할 수도 있습니다.

  1. Directory Server 콘솔의 최상위 디렉토리 탭에서 디렉토리 트리를 확장하여 새 항목의 부모가 될 항목을 표시합니다.
  2. 부모 항목을 마우스 오른쪽 버튼으로 누르고 하위 메뉴에서 새로 만들기 > 기타 항목을 선택합니다. 또는, 부모 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 객체 > 새로 만들기 > 기타 메뉴 항목을 선택할 수도 있습니다.
  3. 새 객체 대화 상자가 표시됩니다.

  4. 새 객체 대화 상자의 객체 클래스 목록에서 새 항목을 정의하는 객체 클래스를 선택한 다음 확인을 누릅니다.
  5. 표 2-1에 열거된 객체 클래스를 선택한 경우 해당 사용자 정의 편집기가 표시됩니다(사용자 정의 편집기에서 항목 작성 참조). 다른 모든 경우에는 일반 편집기가 표시됩니다.

  6. 새 항목을 작성하는 경우 일반 편집기에는 선택한 객체 클래스의 각 필수 속성 필드가 포함되어 있습니다. 모든 필수 속성에 값을 입력해야 합니다. 일부 필드에는 일반 자리 표시자 값(예: New)이 포함되어 있으므로 항목에 적합한 값으로 바꿔야 합니다.
  7. 선택한 객체 클래스에 허용되는 기타 속성을 정의하려면 원하는 속성을 명시적으로 추가해야 합니다. 선택 사항 속성에 값을 제공하려면 다음을 수행합니다.
    1. 속성 추가 버튼을 눌러 허용되는 속성 목록을 표시합니다.
    2. 속성 추가 대화 상자에서 하나 이상의 속성을 선택하고 확인을 누릅니다.
    3. 일반 편집기에서 새 항목 이름 옆에 값을 입력합니다.
    4. 이 대화 상자의 다른 컨트롤에 대한 자세한 내용은 일반 편집기에서 항목 수정을 참조하십시오.

  8. 기본적으로 필수 속성 중 하나가 이름 지정 속성으로 선택되어 일반 편집기의 항목 DN에 표시됩니다. 이름 지정 속성을 변경하려면 다음을 수행합니다.
    1. 변경 버튼을 눌러 이름 지정 속성 변경 대화 상자를 표시합니다.
    2. 속성 테이블에서 새 항목의 DN에 사용할 하나 이상의 속성 옆에 있는 확인란을 선택합니다.
    3. 이름 지정 속성 변경 대화 상자에서 확인을 누릅니다. 선택한 이름 지정 속성을 사용한 새 DN이 일반 편집기의 DN으로 표시됩니다.
  9. 일반 편집기에서 확인을 눌러 새 항목을 저장합니다.
  10. 디렉토리 트리에서 새 항목은 부모 항목의 자식으로 표시됩니다.

사용자 정의 편집기에서 항목 수정

표 2-1에 열거된 객체 클래스의 경우 해당 사용자 정의 편집기나 일반 편집기를 사용하여 항목을 편집할 수 있습니다. 사용자 정의 편집기를 사용하면 가장 일반적인 필드를 쉽게 액세스할 수 있으며 인터페이스를 통해 역할 또는 서비스 클래스 정의 속성과 같은 복잡한 속성 값을 간편하게 정의할 수 있습니다.

일반 편집기에서는 객체 클래스 추가, 허용되는 속성 추가, 여러 값을 갖는 속성 처리 등 항목에 대한 고급 작업을 수행할 수 있습니다. 일반 편집기를 사용하여 항목을 편집하려면 일반 편집기에서 항목 수정을 참조하십시오.


주

사용자 정의 편집기는 오직 표 2-1에 열거된 객체 클래스를 편집할 때만 사용할 수 있습니다. 다른 구조적 객체 클래스(예: inetorgperson에서 상속한 사용자 정의 클래스)가 포함된 항목을 편집하려면 일반 편집기를 사용해야 합니다.

열거된 객체 클래스 중 하나와 보조 객체 클래스가 포함된 항목도 사용자 정의 편집기에서 관리할 수 있습니다. 하지만 보조 클래스로 정의된 속성은 사용자 정의 편집기에서 볼 수 없습니다. 보조 객체 클래스 정의는 Directory Server Administration Reference의 8장, "Object Classes"를 참조하십시오.


사용자 정의 편집기 호출

표 2-1에 열거된 객체 클래스를 가진 항목을 편집하려면 다음을 수행합니다.

  1. Directory Server 콘솔의 최상위 디렉토리 탭에서 디렉토리 트리를 확장하여 편집할 항목을 표시합니다.
  2. 항목을 두 번 누릅니다. 다음과 같은 대체 방법으로 항목의 사용자 정의 편집기를 호출할 수도 있습니다.
    • 항목을 마우스 오른쪽 버튼으로 누르고 "사용자 정의 편집기로 편집" 항목을 선택합니다.
    • 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 객체 > 사용자 정의 편집기로 편집 메뉴 항목을 선택합니다.
    • 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 Ctrl-P 단축키를 사용합니다.
    • 항목의 객체 클래스에 대한 사용자 정의 편집기가 표시됩니다. 예를 들어, 그림 2-1은 사용자 항목의 사용자 정의 편집기를 보여줍니다.

  3. 기본적으로 모든 사용자 정의 편집기는 새 항목의 이름 및 설명 필드가 있는 최상위 사용자 또는 일반 탭이 선택된 상태로 열립니다. 사용자 정의 편집기 필드에서 수정할 속성 값을 편집하거나 제거합니다. 필드 이름 옆에 별표(*)로 표시된 필수 속성 값은 수정할 수는 있지만 제거할 수 없습니다. 다른 필드는 비워둘 수 있습니다. 여러 값을 허용하는 필드에서는 Return을 입력하여 값을 구분할 수 있습니다.
  4. 왼쪽 열에서 다른 탭을 선택하여 해당 패널의 값을 수정합니다. 각 항목 유형의 사용자 정의 편집기에 있는 특정 필드에 대한 자세한 내용을 보려면 도움말 버튼을 누릅니다.

    사용자 및 조직 구성 단위 편집기의 언어 탭에 대한 자세한 내용은 언어 지원 속성 설정을 참조하십시오. 사용자 및 그룹 항목의 계정 탭에 있는 필드에 대해서는 7장, "사용자 계정 및 비밀번호 관리"에서 설명합니다. Directory Server 동기화 서비스를 위해 NT 사용자 및 Posix 사용자 탭이 제공됩니다. 자세한 내용은 Sun 담당자에게 문의하십시오.

    그룹, 역할 및 서비스 클래스 항목 수정에 대한 자세한 내용은 5장, "Identity 및 역할 관리"를 참조하십시오. 비밀번호 정책 수정에 대한 자세한 내용은 7장, "사용자 계정 및 비밀번호 관리"를 참조하십시오. 참조 수정에 대한 자세한 내용은 참조 설정을 참조하십시오.

  5. 확인을 눌러 항목의 변경 사항을 저장하고 사용자 정의 편집기 대화 상자를 닫습니다. 이름 지정 속성(예: 사용자 항목의 일반 이름)을 수정한 경우 해당 변경 사항이 디렉토리 트리에 반영됩니다.

언어 지원 속성 설정

사용자 및 조직 구성 단위 항목의 사용자 정의 편집기는 다국어 디렉토리에 대한 언어 지원을 제공합니다.

  1. 사용자 정의 편집기 호출에 설명된 것처럼 항목의 사용자 정의 편집기를 엽니다.
  2. 왼쪽 열의 언어 탭을 누릅니다.
  3. 사용자 항목의 경우 드롭다운 목록에서 기본 설정 언어를 선택할 수 있습니다.
  4. 사용자 및 조직 구성 단위 항목의 경우 목록에 표시된 언어의 특정 필드에 현지화된 값을 입력할 수 있습니다. 언어를 선택한 다음 해당 언어에 하나 이상의 값을 입력합니다. 현지화된 값을 정의하면 목록의 언어 이름이 굵게 표시됩니다.
  5. 일부 언어에는 현지화된 값의 발음 표시를 입력할 수 있는 발음 필드도 있습니다.

  6. 확인을 눌러 항목의 변경 사항을 저장하고 사용자 정의 편집기 대화 상자를 닫습니다.

일반 편집기에서 항목 수정

일반 편집기를 사용하면 콘솔에 로그인할 때 사용한 바인드 DN에 따라 읽기 가능한 모든 항목 속성을 보고, 쓰기 가능한 항목 속성을 편집할 수 있습니다. 또한, 속성을 추가하거나 제거하고 여러 값을 갖는 속성을 설정하며 항목의 객체 클래스를 관리할 수 있습니다. 속성을 추가하는 경우 이진 속성 및 언어 지원을 위한 하위 유형을 정의할 수도 있습니다.

일반 편집기 호출

디렉토리 항목의 일반 편집기를 호출하려면 다음을 수행합니다.

  1. Directory Server 콘솔의 최상위 디렉토리 탭에서 디렉토리 트리를 확장하여 편집할 항목을 표시합니다.
  2. 항목을 마우스 오른쪽 버튼으로 누르고 "일반 편집기로 편집" 항목을 선택합니다. 다음과 같은 대체 방법으로 일반 편집기를 호출할 수도 있습니다.
    • 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 객체 > 일반 편집기로 편집 메뉴 항목을 선택합니다.
    • 표 2-1에 열거되지 않은 객체 클래스를 가진 항목을 두 번 누릅니다. 객체 클래스에 사용자 정의 편집기가 없는 경우 기본적으로 일반 편집기가 사용됩니다.
    • 아래 그림과 같은 일반 편집기가 표시됩니다.

      그림 2-2 Directory Server 콘솔 - 일반 편집기
      uid=bjensen,ou=People,dc=example,dc=com에 대한 일반 편집기 창과 이 사용자 항목에 대한 속성 필드 및 필드 수정 컨트롤

      일반 편집기에서 항목 속성은 알파벳순으로 열거되며 각 텍스트 상자에 속성 값이 표시됩니다. 읽기 전용 및 작동 가능 속성을 비롯한 모든 속성이 표시됩니다. 오른쪽의 컨트롤을 사용하여 편집기의 디스플레이를 수정하고 속성 목록을 편집할 수 있습니다.

  3. 선택 사항으로, 보기 상자의 컨트롤을 사용하여 일반 편집기의 디스플레이를 수정할 수 있습니다.
    • 처음 스키마에 정의한 대로 속성 이름을 보려면 속성 이름 표시 옵션을 선택합니다. 속성 목록은 이름 알파벳순으로 다시 정렬됩니다.
    • 스키마에 정의한 대체 이름별로 속성을 열거하려면 속성 설명 표시 옵션을 선택합니다. 일반적으로 대체 이름은 속성을 보다 명시적으로 설명합니다. 속성 목록은 설명 알파벳순으로 다시 정렬됩니다.
    • 스키마에서 항목의 객체 클래스에 대해 명시적으로 허용하는 모든 속성을 열거하려면 값을 가진 속성만 표시 확인란을 선택 취소합니다. 항목에 extensibleObject 객체 클래스가 포함되어 있으면 모든 속성이 암묵적으로 허용되지만 표시되지는 않습니다. 기본적으로 값이 정의된 속성만 표시됩니다.
    • 속성 목록 아래에 항목의 고유 이름을 표시하거나 표시하지 않으려면 DN 표시 확인란을 선택하거나 선택 취소합니다.
    • 갱신 버튼을 누르면 서버에 액세스하여 항목의 현재 내용에 따라 모든 속성 값을 업데이트합니다.

    • 주의

      갱신 버튼을 누르면 저장하지 않은 일반 편집기의 수정 사항이 즉시 제거됩니다.


다음 절에서는 속성 값 설정, 객체 클래스 관리, 항목의 이름 지정 속성 변경 등의 컨트롤에 대해 설명합니다.

속성 값 수정

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 속성 목록을 스크롤하여 수정할 값을 누릅니다.
  3. 선택한 속성이 강조 표시되고 선택한 값이 포함된 텍스트 필드에 편집 커서가 나타납니다.

  4. 마우스와 키보드를 사용하여 텍스트를 원하는 값으로 편집합니다. 시스템 클립보드를 사용하여 이 필드의 텍스트를 복사하거나 잘라내어 붙여넣을 수도 있습니다.
  5. 속성이 읽기 전용이거나 속성을 수정할 수 있는 쓰기 권한이 없는 경우에는 텍스트 필드를 편집할 수 없습니다.

  6. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

여러 값을 갖는 속성 편집

디렉토리 스키마에서 여러 값을 갖는 것으로 정의된 속성의 경우 일반 편집기에 두 개 이상의 값 필드가 표시될 수 있습니다. 자세한 내용은 9장, "디렉토리 스키마 확장"을 참조하십시오.

여러 값을 갖는 속성에 새 값을 추가하려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 속성 목록을 스크롤하여 해당 속성이나 속성 값 중 하나를 누릅니다. 선택한 속성이 강조 표시되고 값 추가 버튼이 활성화됩니다. 선택한 속성이 여러 값을 갖는 것으로 정의되지 않았거나 읽기 전용인 경우 또는 속성을 수정할 수 있는 쓰기 권한이 없는 경우에는 버튼이 활성화되지 않습니다.
  3. 값 추가 버튼을 누릅니다. 목록에 있는 속성 이름 옆에 새로운 빈 텍스트 필드가 표시됩니다.
  4. 새 텍스트 필드에 새로운 속성 값을 입력합니다. 시스템 클립보드를 사용하여 이 필드의 텍스트를 복사하거나 잘라내어 붙여넣을 수도 있습니다.
  5. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

여러 값을 갖는 속성의 값을 제거하려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 속성 목록을 스크롤하여 제거할 특정 값을 누릅니다. 선택한 속성이 강조 표시되고 값 삭제 버튼이 활성화됩니다. 선택한 속성이 읽기 전용이거나 속성을 수정할 수 있는 쓰기 권한이 없는 경우에는 버튼이 활성화되지 않습니다.
  3. 값 삭제 버튼을 누릅니다. 선택한 값이 포함된 텍스트 필드가 제거됩니다.
  4. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

속성 추가

항목에 속성을 추가하려면 이 속성이 필요하거나 허용되는 객체 클래스가 항목에 포함되어 있어야 합니다. 자세한 내용은 객체 클래스 관리 및 9장, "디렉토리 스키마 확장"을 참조하십시오.

항목에 속성을 추가하려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 값을 가진 속성만 표시 옵션이 선택되어 있는지 확인합니다.
  3. 속성 추가 버튼을 눌러 속성 목록이 있는 대화 상자를 표시합니다. 이 목록에는 항목에 정의된 객체 클래스에서 허용하는 속성만 포함되어 있습니다.
  4. 속성 추가 대화 상자에서 추가할 속성을 하나 이상 선택합니다.
  5. 선택 사항으로, 대화 상자의 맨 위에 있는 드롭다운 목록에서 다음 하위 유형 중 한 개나 둘 모두를 선택할 수 있습니다.
    • 언어 하위 유형 - 속성 값에 사용된 언어를 표시하려면 이 하위 유형을 사용합니다. 한 속성을 다른 언어로 여러 번 추가하여 디렉토리에 현지화 정보를 저장할 수 있습니다.

      선택 사항으로, 언어 이외에 발음 하위 유형을 선택하여 이 속성 값에 해당 언어 값의 발음이 포함되어 있음을 나타낼 수도 있습니다.

    • 이진 하위 유형 - 속성에 이진 하위 유형을 지정하면 실제 구문에 관계없이 속성 값이 이진 데이터(불투명한 데이터 청크)로서 LDAP를 통해 전송됩니다. 이 옵션은 주의해서 사용해야 하며, userCertificate와 같이 LDAP 문자열 표현이 없는 복잡한 구문에 사용됩니다. 속성 값이 이미 이진으로 간주되는 속성에는 이진 하위 유형을 사용하지 마십시오.
  6. 속성과 하위 유형(선택 사항)을 선택했으면 확인을 누릅니다. 속성은 일반 편집기의 목록에 알파벳순으로 추가됩니다.
  7. 새로운 속성 이름 옆의 빈 텍스트 필드에 새 속성 값을 입력합니다. 시스템 클립보드를 사용하여 이 필드의 텍스트를 복사하거나 잘라내어 붙여넣을 수도 있습니다.
  8. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

속성 제거

항목의 속성과 해당 값을 모두 제거하려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 속성 목록을 스크롤하여 제거할 속성 이름을 누릅니다. 선택한 속성이 강조 표시되고 속성 삭제 버튼이 활성화됩니다. 선택한 속성이 읽기 전용이거나 속성을 수정할 수 있는 쓰기 권한이 없는 경우에는 버튼이 활성화되지 않습니다.

  3. 주

    일반 편집기를 사용하면 이 속성에 정의할 수 있는 객체 클래스에 필요한 속성을 제거할 수 있습니다. 필요한 속성 없이 항목을 저장하려고 하면 서버에서 이에 대한 응답으로 객체 클래스 위반을 반환합니다. 항목에서 정의하는 모든 객체 클래스의 필수 속성이 항목에 포함되어 있어야 합니다.


  4. 속성 삭제 버튼을 누릅니다. 속성과 해당 텍스트 필드 값이 모두 제거됩니다.
  5. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

객체 클래스 관리

항목의 객체 클래스는 여러 값을 갖는 objectclass 속성으로 정의됩니다. 정의된 객체 클래스의 관리를 돕기 위해 이 속성을 수정하는 경우 일반 편집기는 특수 대화 상자를 제공합니다.

항목에 객체 클래스를 추가하려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 속성 목록을 스크롤하여 objectclass 속성을 선택합니다. 값 추가 버튼이 활성화됩니다. 이 항목의 객체 클래스를 수정할 수 있는 권한이 없는 경우에는 버튼이 활성화되지 않습니다.
  3. 값 추가 버튼을 누릅니다.
  4. 항목에 추가할 수 있는 객체 클래스 목록이 포함된 객체 클래스 추가 대화 상자가 표시됩니다.

  5. 이 항목에 추가할 객체 클래스를 하나 이상 선택하고 확인을 누릅니다. 선택한 객체 클래스가 objectclass 속성 값 목록에 표시됩니다.
  6. 항목에 없는 속성이 새 객체 클래스에 필요하면 일반 편집기에서 해당 속성을 자동으로 추가합니다. 모든 필수 속성에 값을 입력해야 합니다.
  7. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

항목의 객체 클래스를 제거하려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 속성 목록을 스크롤하여 제거할 objectclass 속성의 특정 값을 누릅니다. 스키마에서 선택한 객체 클래스의 제거를 허용하고 이 항목의 객체 클래스를 수정할 수 있는 권한이 있으면 값 삭제 버튼이 활성화됩니다.
  3. 값 삭제 버튼을 누릅니다. 특정 객체 클래스가 제거됩니다.
  4. 객체 클래스를 제거하면 일반 편집기에서 자동으로 나머지 객체 클래스가 허용하지 않거나 필요로 하지 않는 속성을 제거합니다. 이름 지정 속성 중 하나를 제거하면 다른 속성이 자동으로 선택되며, 콘솔에서 이 변경 사항을 알려줍니다.

  5. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

항목 이름 바꾸기

이름 지정 속성은 고유 이름(DN)에 표시되는 항목의 속성-값 쌍으로, 항목의 기존 속성에서 선택됩니다. 이름 지정 속성을 수정하여 항목의 이름을 바꾸려면 다음을 수행합니다.

  1. 일반 편집기 호출에 설명된 것처럼 일반 편집기를 엽니다.
  2. 변경 버튼 옆의 텍스트에 이 항목의 현재 이름 지정 속성이 표시됩니다. DN 표시 확인란을 선택하면 속성 값 목록 아래의 DN에서 이러한 속성을 볼 수 있습니다.

  3. 변경 버튼을 누릅니다. 이 항목의 이름을 바꿀 수 있는 권한이 없으면 버튼이 활성화되지 않습니다.
  4. 이름 지정 속성 변경 대화 상자가 표시됩니다.

  5. 속성 목록을 스크롤하여 이 항목의 DN에 추가할 속성을 선택합니다. 이름 지정 속성에서 추가하거나 제거할 속성 옆에 있는 확인란을 선택하거나 선택 취소합니다.
  6. 동일한 부모 아래에 있는 항목은 각각 고유한 DN을 가져야 하므로 속성이나 속성 조합이 고유한 이름 지정 속성을 선택해야 합니다. DN이 고유하지 않은 항목은 서버에서 저장하지 않습니다. 관례상, 사용자를 나타내는 모든 항목은 같은 이름 지정 속성을 사용해야 합니다.

  7. 이름 지정 속성 변경 대화 상자에서 확인을 누릅니다. 일반 편집기에 이 항목의 새 DN이 표시됩니다.
  8. 다른 값을 편집하거나 항목을 원하는 대로 수정한 다음 확인을 눌러 변경 사항을 저장하고 일반 편집기를 닫습니다.

디렉토리 항목 삭제

Directory Server 콘솔에서 항목을 삭제하려면 다음을 수행합니다.

  1. Directory Server 콘솔의 최상위 디렉토리 탭에서 디렉토리 트리를 확장하여 제거할 항목을 표시합니다.
  2. 하위 트리의 루트 노드를 선택하여 디렉토리의 전체 분기를 삭제할 수도 있습니다.

  3. 항목을 마우스 오른쪽 버튼으로 누르고 삭제 항목을 선택합니다. 다음과 같은 대체 방법으로 항목을 삭제할 수도 있습니다.
    • 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 편집 > 삭제 메뉴 항목을 선택합니다. 이 항목을 디렉토리의 다른 위치에 붙여넣으려면 편집 > 잘라내기 메뉴 항목을 사용할 수도 있습니다.
    • 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 Ctrl-D 단축키를 사용합니다.
    • 보기 > 레이아웃 옵션을 선택하여 Directory Server 콘솔의 오른쪽 패널에 자식을 표시한 경우 Ctrl+누름 또는 Shift+누름 조합을 사용하여 삭제할 항목을 여러 개 선택할 수 있습니다.

  4. 항목 또는 하위 트리와 해당 내용을 모두 삭제할 것을 확인합니다.
  5. 선택한 항목은 즉시 삭제되며 실행 취소할 수 없습니다. 두 개 이상의 항목을 삭제하면 콘솔에서 삭제한 항목 수와 발생한 오류를 알리는 정보 대화 상자를 표시합니다.

콘솔을 사용한 대량 작업

LDIF 파일을 사용하여 여러 항목을 추가하거나 혼합된 작업을 수행하거나 전체 접미어를 가져올 수 있습니다. LDIF 파일과 Directory Server 콘솔을 사용하여 항목을 추가하려면 다음을 수행합니다.

  1. 이전 절에서 설명한 구문을 사용하여 LDIF 파일에 항목 또는 작업을 정의합니다. 단순히 항목을 추가하거나 접미어를 초기화하는 경우 changetype 키워드를 사용할 필요 없이 LDIF 파일에 항목만 추가해도 됩니다. 혼합된 작업을 수행하는 경우에는 모든 DN 뒤에 changetype 및 필요에 따라 특정 작업이나 속성 값이 있어야 합니다.
  2. Directory Server 콘솔에서 LDIF 파일을 가져옵니다. 자세한 내용은 LDIF 파일 가져오기를 참조하십시오.
  3. 혼합된 작업을 수행하는 경우 서버에서 모든 LDIF 작업을 수행하도록 LDIF 가져오기 대화 상자에서 추가만 확인란을 선택 취소합니다.


명령줄에서 항목 관리

ldapmodify 및 ldapdelete 명령줄 유틸리티는 디렉토리 내용을 추가, 편집 및 삭제하는 모든 기능을 제공합니다. 두 유틸리티를 사용하여 서버의 구성 항목과 사용자 항목의 데이터를 모두 관리할 수 있으며, 두 개 이상의 디렉토리를 대량으로 관리하는 스크립트를 작성할 수도 있습니다.

ldapmodify 및 ldapdelete는 본 설명서의 절차에서 주로 사용하는 명령입니다. 다음 절에서는 이러한 관리 절차를 수행하는 데 필요한 모든 기본 작업에 대해 설명합니다. 기능, 모든 명령줄 옵션, 명령의 반환 값 등에 대한 자세한 내용은 Directory Server Resource Kit Tools Reference의 4장, "ldapmodify" 및 5장, "ldapdelete"에서 설명합니다.

명령줄 유틸리티에 대한 입력은 반드시 명령줄 또는 입력 파일을 통해 직접 제공할 수 있는 LDIF 형식이어야 합니다. 아래 절에서는 LDIF 입력에 대해 설명하고 이후 절에서는 각 수정 유형에 대한 LDIF를 소개합니다.

LDIF 입력 제공

명령줄 유틸리티에 LDIF 입력을 제공하는 경우 명령줄 입력, 특수 문자, 스키마 검사, 항목의 순서 및 크기에 관해 특히 주의해야 할 몇 가지 사항이 있습니다. 모든 디렉토리 데이터는 유니코드의 UTF-8 인코딩을 사용하여 저장되므로 제공하는 모든 LDIF 입력도 UTF-8로 인코딩해야 합니다. LDIF 형식에 대해서는 Directory Server Administration Reference의 7장, "LDAP Data Interchange Format Reference"에서 자세히 설명합니다.


주

LDIF 속성 값 문자열의 끝에 실수로 공백이 들어가지 않도록 주의하십시오. Directory Server는 공백으로 끝나는 속성 값을 읽으면 base 64로 값을 인코딩합니다.


명령줄에서 LDIF 입력 종료

ldapmodify 유틸리티와 ldapdelete 유틸리티는 파일을 읽는 것과 같은 방법으로 명령 뒤에 입력된 LDIF 명령문을 읽습니다. 입력이 끝나면 쉘 프로그램에서 EOF 이스케이프 시퀀스로 인식하는 문자를 입력하십시오.

일반적으로 EOF 이스케이프 시퀀스로 Control-D (^D)가 사용됩니다.

아래 예는 ldapmodify 명령에 대한 입력이 어떻게 종료되는지 보여줍니다.

prompt> ldapmodify -h host -p port -D bindDN -w password
dn: cn=Barry Nixon,ou=People,dc=example,dc=com
changetype: modify
delete: telephonenumber
^D
prompt>

단순성과 이식 가능성을 위해 본 설명서의 예에서는 프롬프트나 EOF 시퀀스를 표시하지 않습니다.

특수 문자 사용

명령줄에 명령 옵션을 입력할 때 명령줄 해석기에 특별한 의미가 있는 문자(예: 공백( ), 별표 [*], 역슬래시 [\] 등)를 이스케이프해야 할 수도 있습니다. 예를 들어, DN에는 공백이 포함되어 있는 경우가 많으므로 대부분의 UNIX 쉘에서 DN 값을 다음과 같이 큰따옴표("")로 묶어야 합니다.

-D "cn=Barbara Jensen,ou=Product Development,dc=example,dc=com"

사용하는 명령줄 해석기에 따라 작은따옴표나 큰따옴표를 이스케이프 문자로 사용해야 합니다. 자세한 내용은 운영 체제 설명서를 참조하십시오.

또한, 쉼표가 포함된 DN을 사용하는 경우 역슬래시(\)를 사용하여 쉼표를 이스케이프해야 합니다. 예를 들면 다음과 같습니다.

-D "cn=Patricia Fuentes,ou=People,o=example.com Bolivia\,S.A."

ldapmodify 명령 뒤의 LDIF 명령문은 쉘이 아닌 명령에서 해석되므로 특별히 주의할 필요가 없습니다.

스키마 검사

항목을 추가하거나 수정하는 경우 이 항목의 객체 클래스에서 필요로 하거나 허용하는 속성을 사용해야 하며 속성 값이 정의된 구문과 일치해야 합니다.

항목을 수정하면 Directory Server는 수정되는 항목만이 아닌 전체 항목에 대해 스키마 검사를 수행합니다. 따라서 항목의 객체 클래스 또는 속성이 스키마에 맞지 않으면 작업이 실패할 수 있습니다. 자세한 내용은 스키마 검사를 참조하십시오.

LDIF 항목 정렬

명령줄 또는 파일의 항목 추가용 LDIF 텍스트 시퀀스에서 부모 항목은 항상 자식보다 앞에 나와야 합니다. 이렇게 하면 서버에서 LDIF 텍스트를 처리할 때 자식 항목보다 먼저 부모 항목을 작성하게 됩니다.

예를 들어, 디렉토리에 없는 항목을 People 하위 트리에 작성하려면 다음과 같이 People 컨테이너를 나타내는 항목이 이 하위 트리의 항목보다 앞에 나와야 합니다.

dn: dc=example,dc=com
dn: ou=People,dc=example,dc=com
...
People subtree entries
...
dn: ou=Group,dc=example,dc=com
...
Group subtree entries
...

ldapmodify 명령줄 유틸리티를 사용하여 디렉토리에 어떤 항목이든 작성할 수 있지만 접미어 루트나 하위 접미어는 필수 구성 항목과 연결해야 하는 특수 항목입니다. 새로운 루트 접미어나 하위 접미어 및 관련된 구성 항목을 추가하려면 명령줄에서 접미어 작성을 참조하십시오.

대규모 항목 관리

대규모 속성 값을 가진 항목을 추가하거나 수정하려면 먼저 서버에서 이 값을 허용하도록 구성해야 합니다. 서버의 오버로드를 방지하기 위해 클라이언트는 기본적으로 2MB보다 큰 데이터를 보낼 수 없도록 제한됩니다.

이보다 큰 항목을 추가하거나 속성 값을 이보다 큰 값으로 수정하면 서버에서 작업을 거부하고 즉시 연결을 닫습니다. 예를 들어, 하나 이상의 항목 속성에 멀티미디어 내용과 같은 이진 데이터가 있으면 이 제한을 초과할 수 있습니다.

또한 대규모 정적 그룹을 정의하는 항목에는 많은 구성원이 포함될 수 있으므로 해당 표시가 이 제한을 초과합니다. 하지만 이러한 그룹은 성능상 바람직하지 않으며 디렉토리 구조를 다시 설계하는 것이 좋습니다. 자세한 내용은 그룹 관리를 참조하십시오.

클라이언트에서 보내는 데이터에 대한 서버의 크기 제한을 수정하려면 다음을 수행합니다.

  1. cn=config 항목의 nsslapd-maxbersize 속성에 새 값을 설정합니다.
  2. 콘솔에서 이 작업을 수행하려면 관리자 또는 디렉토리 관리자로 로그온하여 일반 편집기에서 항목 수정에 설명된 지침에 따라 cn=config 항목을 편집합니다. nsslapd-maxbersize 속성을 클라이언트에서 한 번에 보낼 수 있는 최대 바이트 수로 설정하십시오.
  3. 명령줄에서 이 작업을 수행하려면 아래 명령을 실행합니다.
  4. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=config
    changetype: modify
    replace: nsslapd-maxbersize
    nsslapd-maxbersize: sizeLimitInBytes
    ^D

    자세한 내용은 Directory Server Administration Reference의 2장, "nsslapd-maxbersize"를 참조하십시오.

  5. Directory Server 시작 및 중지에 설명된 것처럼 서버를 다시 시작합니다.

오류 처리

명령줄 도구는 LDIF 입력의 모든 항목 또는 수정 사항을 순차적으로 처리합니다. 기본 동작은 처음 오류가 발생할 때 처리를 중지하는 것입니다. 오류에 관계 없이 모든 입력을 계속 처리하려면 -c 옵션을 사용하십시오. 도구 출력에 오류 조건이 표시됩니다.

위에 열거된 주의 사항 외에 일반적으로 발생하는 오류는 다음과 같습니다.

오류 조건 및 이를 방지하는 방법에 대한 자세한 내용은 Directory Server Resource Kit Tools Reference의 4장, "ldapmodify" 및 5장, "ldapdelete"를 참조하십시오.

ldapmodify를 사용한 항목 추가

ldapmodify의 -a 옵션을 사용하여 하나 이상의 항목을 디렉토리에 추가할 수 있습니다. 아래 예에서는 사용자가 포함될 구조적 항목을 작성한 후에 사용자 항목을 작성합니다.

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Babs Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: clearPassword

-D 옵션과 -w 옵션은 각각 이 항목을 작성할 수 있는 권한이 있는 사용자의 바인드 DN과 비밀번호를 제공합니다. -a 옵션은 LDIF의 모든 항목이 추가된다는 것을 나타냅니다. 그런 후에 각 항목이 해당 DN과 속성 값으로 지정되고 항목 사이에는 빈 줄이 들어갑니다. ldapmodify 유틸리티는 입력된 항목을 작성하고 오류가 발생하면 이를 보고합니다.

관례상, 항목의 LDIF는 다음과 같은 순서로 속성을 열거합니다.

userpassword 속성 값을 입력할 때는 일반 텍스트로 비밀번호를 지정하십시오. 서버에서 이 값을 암호화하여 암호화된 값만 저장합니다. LDIF 파일에 표시되는 일반 텍스트 비밀번호를 보호하려면 읽기 권한을 제한해야 합니다.

명령줄에서 -a 옵션을 지정할 필요가 없는 다른 형식의 LDIF를 사용할 수도 있습니다. 이 형식은 다음 절에서 설명하는 항목 수정 명령문과 항목 추가 명령문을 결합할 수 있다는 이점이 있습니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Barbara Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: clearPassword

changetype: add 키워드는 지정된 DN의 항목이 이후의 모든 속성을 사용하여 작성되어야 함을 나타냅니다. 다른 모든 옵션과 LDIF 규정은 동일합니다.

두 예에서 모두 -f filename 옵션을 사용하여 단말기 입력이 아닌 파일에서 LDIF를 읽을 수도 있습니다. -a 옵션의 사용에 따라 LDIF 파일에는 단말기 입력과 동일한 형식이 포함되어야 합니다.

ldapmodify를 사용한 항목 수정

속성 및 해당 값을 기존 항목에 추가하거나 대체 또는 제거하려면 changetype: modify 키워드를 사용합니다. changetype: modify를 지정하는 경우 항목의 수정 방법을 나타내는 하나 이상의 변경 작업도 함께 제공해야 합니다. 아래 예에서는 가능한 LDIF 변경 작업 중 세 개를 보여줍니다.

dn: entryDN
changetype: modify
add: attribute
attribute
: value
...
-
replace: attribute
attribute
: newValue
...
-
delete: attribute
[attribute: value]
...

같은 항목에 대한 작업을 구분하려면 하이픈(-)을 사용하고 다른 항목에 대한 작업 그룹을 구분하려면 빈 줄을 사용합니다. 각 작업에 여러 개의 attribute: value 쌍을 지정하여 동시에 추가, 교체 또는 삭제할 수도 있습니다.

속성 값 추가

아래 예에서는 어떻게 동일한 add LDIF 구문을 사용하여 여러 값을 갖는 기존 속성 및 존재하지 않는 속성에 값을 추가할 수 있는지 보여줍니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: cn
cn: Babs Jensen
-
add: mobile
mobile: (408) 555-7844
mobile: (408) 555-7845

다음과 같은 조건에 부합될 경우 이 작업은 실패할 수 있으며 서버에서 오류를 반환합니다.

이진 속성 하위 유형 사용

attribute;binary 하위 유형을 지정하면 실제 구문에 관계없이 속성 값이 이진 데이터로서 LDAP를 통해 전송됩니다. 이진 하위 유형은 userCertificate와 같이 LDAP 문자열 표현이 없는 복잡한 구문에 사용되며, 이외의 용도로 사용해서는 안 됩니다.

ldapmodify 명령과 함께 사용된 모든 LDIF 명령문의 속성 이름에 적절한 하위 유형을 추가할 수 있습니다.

이진 값을 입력하려면 LDIF 텍스트에 직접 입력하거나 다른 파일에서 읽어올 수 있습니다. 아래 예에서는 파일의 값을 읽어오는 LDIF 구문을 보여줍니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
version: 1
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: userCertificate;binary
userCertificate;binary:< file:///path/certFile

< 구문을 사용하여 파일 이름을 지정하려면 version: 1 줄에서 LDIF 명령문을 시작해야 합니다. ldapmodify는 이 명령문을 처리할 때 지정된 파일의 전체 내용에서 읽어온 값을 속성 값으로 설정합니다.

언어 하위 유형이 지정된 속성 추가

속성의 언어 및 발음 하위 유형은 현지화된 값을 지정합니다. 속성에 언어 하위 유형을 지정하면 다음과 같이 속성 이름에 하위 유형이 추가됩니다.

attribute;lang-CC

여기서 attribute는 기존 속성 유형이고 CC는 언어를 지정하는 두 문자 국가 코드입니다. 선택 사항으로 언어 하위 유형에 발음 하위 유형을 추가하여 현지화된 값의 발음을 지정할 수도 있습니다. 이 경우 속성 이름은 아래와 같이 표시됩니다.

attribute;lang-CC;phonetic

하위 유형이 지정된 속성에 작업을 수행하려면 해당 하위 유형을 명시적으로 일치시켜야 합니다. 예를 들어, lang-fr 언어 하위 유형이 지정된 속성 값을 수정하려면 다음과 같이 수정 작업에 lang-fr을 추가해야 합니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: homePostalAddress;lang-fr
homePostalAddress;lang-fr: 34\, avenue des Champs-Elyses

속성 값 수정

아래 예에서는 LDIF의 replace 구문을 사용하여 어떻게 한 개의 값을 갖는 속성과 여러 값을 갖는 속성의 모든 값을 수정할 수 있는지 보여줍니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: sn
sn: Morris
-
replace: cn
cn: Barbara Morris
cn: Babs Morris

replace 구문을 사용하면 지정된 속성의 현재 값은 모두 제거되고 제공된 모든 값이 추가됩니다.

속성 값 삭제

아래 예에서는 속성을 완전히 삭제하는 방법과 여러 값을 갖는 속성의 값 하나만 삭제하는 방법을 보여줍니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: facsimileTelephoneNumber
-
delete: cn
cn: Babs Morris

attribute: value 쌍을 지정하지 않고 delete 구문을 사용하면 이 속성의 모든 값이 제거됩니다. attribute: value 쌍을 지정하면 해당 값만 제거됩니다.

여러 값을 갖는 속성의 값 하나만 수정

ldapmodify 명령을 사용하여 여러 값을 갖는 속성의 값 하나만 수정하려면 아래 예와 같이 두 가지 작업을 수행해야 합니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: mobile
mobile: (408) 555-7845
-
add: mobile
mobile: (408) 555-5487

ldapmodify를 사용한 항목 이름 바꾸기

항목의 이름을 바꾸면 상대적인 고유 이름(RDN)이 수정됩니다. RDN은 항목의 DN에서 가장 왼쪽에 있는 attribute=value 쌍입니다. 이 속성을 이름 지정 속성이라고 하며 항목의 모든 속성에서 값이 동일해야 합니다.

항목의 이름을 바꿀 때 DN의 다른 부분을 변경하면 항목이 다른 하위 트리로 이동하기 때문에 주의해야 합니다. 완전히 다른 분기로 항목을 이동하려면 이전 항목의 속성을 사용하여 다른 하위 트리에 새 항목을 작성한 다음 이전 항목을 삭제해야 합니다.

또한, 부모의 RDN이 자식의 DN에 사용되고 DN에 있는 모든 항목이 존재해야 하기 때문에 자식이 있는 항목은 이름을 바꿀 수 없습니다. 전체 트리를 이동하려면 새로운 위치에 다시 작성해야 합니다.

LDIF 명령문을 사용하여 항목의 이름을 바꾸려면 changetype: modrdn 키워드를 사용합니다. 아래 예에서는 Barbara Morris에 대한 uid 이름 지정 속성의 이름을 바꿉니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modrdn
newrdn: uid=bmorris
deleteoldrdn: 1

newrdn 줄은 attribute=value 구문을 사용하는 새로운 이름 지정 속성을 제공합니다. deleteoldrdn 줄은 새 속성을 추가하는 동시에 이전의 이름 지정 속성을 항목에서 제거할지 여부를 나타냅니다(1은 예, 0은 아니요). 두 경우 모두, 새로운 이름 지정 속성이 항목에 추가됩니다.

ldapdelete를 사용한 항목 삭제

디렉토리에서 항목을 삭제하려면 ldapdelete 명령줄 유틸리티를 사용합니다. 이 유틸리티는 디렉토리 서버에 바인드하여 해당 DN으로 지정된 하나 이상의 항목을 삭제합니다. 지정된 항목을 삭제할 수 있는 권한이 있는 바인드 DN을 제공해야 합니다.

부모 항목의 이름을 바꿀 수 없는 것과 같은 이유로 자식이 있는 항목은 삭제할 수 없습니다. LDAP 프로토콜은 자식 항목의 부모가 없는 상황을 허용하지 않습니다. 예를 들어, 조직 구성 단위 항목을 삭제하려면 먼저 조직 구성 단위에 속해 있는 모든 항목을 삭제해야 합니다.


주의   

o=NetscapeRoot 접미어를 삭제하지 마십시오. 관리 서버는 설치된 Sun Java System 서버에 대한 정보를 저장할 때 이 접미어를 사용합니다. 이 접미어를 삭제하면 Directory Server를 비롯한 모든 Sun Java System 서버를 다시 설치해야 할 수 있습니다.


아래 예에서는 조직 구성 단위의 항목이 한 개뿐이므로 이 항목을 삭제한 후에 부모 항목을 삭제할 수 있습니다.

ldapdelete -h host -p port -D "cn=Directory Manager" -w password
uid=bjensen,ou=People,dc=example,dc=com
ou=People,dc=example,dc=com

ldapmodify를 사용한 항목 삭제

changetype: delete 키워드를 ldapmodify 유틸리티와 함께 사용하여 항목을 삭제할 수도 있습니다. 이 경우 ldapdelete를 사용할 때와 같은 제한이 모두 적용됩니다. 항목을 삭제하는 LDIF 구문은 한 개의 LDIF 파일로 혼합된 작업을 수행할 수 있다는 이점이 있습니다.

아래 예에서는 이전 예와 동일한 삭제 작업을 수행합니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: delete

dn: ou=People,dc=example,dc=com
changetype: delete


참조 설정

참조를 사용하여 클라이언트 응용 프로그램에서 로컬에 없는 정보를 구하기 위해 연결할 서버를 알려줄 수 있습니다. 참조란 Directory Server에서 작업 결과 대신 클라이언트로 반환하는 원격 접미어 또는 항목에 대한 포인터입니다. 이 경우 클라이언트는 참조에 지정된 원격 서버에 대해 다시 작업을 수행해야 합니다. 리디렉션은 다음 세 가지 경우에 발생합니다.

참조는 항상 다른 서버의 호스트 이름, 포트 번호 및 DN (선택 사항)이 포함된 LDAP URL 형식으로 지정됩니다. 자세한 내용은 Directory Server Administration Reference의 6장, "LDAP URL Reference"를 참조하십시오. 디렉토리 배포 시 참조를 사용하는 방법에 대한 개념 정보는 Directory Server Deployment Planning Guide의 5장, "Distribution, Chaining, and Referrals"를 참조하십시오.

다음 절에서는 디렉토리의 기본 참조 및 스마트 참조를 정의하는 절차에 대해 설명합니다.

기본 참조 설정

클라이언트 응용 프로그램이 사용자 디렉토리의 접미어에 존재하지 않는 DN에 대한 작업을 제출하면 기본 참조가 해당 클라이언트 응용 프로그램으로 반환됩니다. 기본 참조는 디렉토리의 모든 접미어에 적용되기 때문에 전역 참조라고도 불립니다. 서버는 정의된 모든 참조를 반환하지만 반환 순서는 정의되어 있지 않습니다.

콘솔에서 기본 참조 설정

  1. Directory Server 콘솔의 최상위 구성 탭에 있는 구성 트리의 루트에서 서버 노드를 선택한 다음 오른쪽 패널에서 네트워크 탭을 선택합니다.
  2. 참조 반환 확인란을 선택하고 텍스트 필드에 LDAP URL을 입력합니다. 또는 URL 구성을 눌러 LDAP URL의 정의를 도와줄 대화 상자를 표시합니다. 보안 포트에 대한 LDAP URL의 예는 아래와 같습니다.
  3. ldaps://east.example.com:636/dc=example,dc=com

    다음과 같이 여러 개의 참조 URL을 공백과 인용 부호로 구분하여 입력할 수도 있습니다.

    "ldap://east.example.com:389" "ldap://backup.example.com:389"

  4. 저장을 누르면 변경 사항이 즉시 적용됩니다.

명령줄에서 기본 참조 설정

ldapmodify 명령줄 유틸리티를 사용하여 디렉토리 구성 파일의 cn=config 항목에 하나 이상의 기본 참조를 추가 또는 교체합니다. 예를 들면 다음과 같습니다.

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=config
changetype: modify
replace: nsslapd-referral
nsslapd-referral: ldap://east.example.com:389
nsslapd-referral: ldap://backup.example.com:389

서버를 다시 시작할 필요는 없습니다.

스마트 참조 작성

스마트 참조를 사용하면 디렉토리 항목이나 디렉토리 트리를 특정 LDAP URL에 매핑할 수 있습니다. 스마트 참조를 통해 클라이언트 응용 프로그램에서 특정 서버나 특정 서버의 특정 항목을 참조하도록 설정할 수 있습니다.

스마트 참조는 동일한 DN을 가진 다른 서버의 실제 항목을 가리키는 경우가 많습니다. 하지만 동일한 서버나 다른 서버의 모든 항목에 대해 스마트 참조를 정의할 수 있습니다. 예를 들어 다음과 같은 DN을 가진 항목을 정의할 수 있습니다.

uid=bjensen,ou=People,dc=example,dc=com

이 항목을 east.example.com 서버의 다른 항목을 가리키는 스마트 참조로 정의하려면 다음과 같이 입력합니다.

cn=Babs Jensen,ou=Sales,o=east,dc=example,dc=com

디렉토리는 RFC 2251 섹션 4.1.11에 지정된 표준에 따라 스마트 참조를 사용합니다(http://www.ietf.org/rfc/rfc2251.txt 참조).

콘솔에서 스마트 참조 작성

  1. Directory Server 콘솔의 최상위 디렉토리 탭에서 디렉토리 트리를 확장하여 스마트 참조의 부모가 될 항목을 표시합니다.
  2. 부모 항목을 마우스 오른쪽 버튼으로 누르고 새로 만들기 > 참조 메뉴 항목을 선택합니다. 또는, 부모 항목을 마우스 왼쪽 버튼으로 눌러 선택한 다음 객체 > 새로 만들기 > 참조 메뉴 항목을 선택할 수도 있습니다.
  3. 참조 항목의 사용자 정의 편집기 대화 상자가 표시됩니다.

  4. 편집기의 일반 탭에서 참조 이름을 입력하고 드롭다운 목록에서 이름 지정 속성을 선택합니다. 이 이름은 선택한 이름 지정 속성 값이 됩니다. 선택 사항으로, 이 참조에 대한 설명 문자열을 입력할 수도 있습니다.
  5. 편집기의 URL 탭에서 구성 버튼을 눌러 스마트 참조의 URL을 정의합니다. 표시되는 대화 상자에 LDAP URL의 요소를 입력합니다.
  6. URL은 참조 항목이 저장된 디렉토리 서버의 호스트 이름과 LDAP 포트 번호, 서버에 있는 대상 항목의 DN 등으로 구성됩니다. 기본적으로 대상 DN은 스마트 참조 항목의 DN과 같으며 접미어, 하위 트리 또는 리프 항목 중 하나일 수 있습니다.

  7. LDAP URL 구성 대화 상자에서 확인을 누릅니다. 새 참조 텍스트 상자에 이 URL이 표시됩니다.
  8. 새 참조 텍스트 상자 옆에 있는 추가를 눌러 목록에 참조를 추가합니다.
  9. 이 항목에 대한 참조로 반환할 URL을 두 개 이상 정의할 수 있습니다. 구성, 추가, 삭제 및 변경 버튼을 사용하여 참조 목록을 작성하고 관리합니다.
  10. 참조 인증 버튼을 눌러 Directory Server 콘솔에서 원격 서버에 대한 참조를 따르면서 바인드할 때 사용할 자격 증명을 설정할 수 있는 대화 상자를 표시합니다. 서버에 액세스할 때 사용할 바인드 DN과 비밀번호를 정의할 수도 있습니다. 같은 서버에 대한 참조는 모두 동일한 자격 증명을 사용합니다.
  11. 추가, 편집 및 삭제 버튼을 사용하여 서버 목록 및 해당 자격 증명을 관리합니다. 모두 마쳤으면 확인을 누릅니다.
  12. 참조의 사용자 정의 편집기에서 확인을 눌러 스마트 참조 항목을 저장합니다.
  13. 콘솔의 디렉토리 트리에서 스마트 참조 항목이 있던 위치에 대상 하위 트리나 항목이 표시되어야 합니다. 노란색 경고 아이콘, URL 또는 자격 증명이 표시된 스마트 참조 항목은 잘못된 것입니다. 항목을 두 번 눌러 참조 오류가 표시되면 계속을 누른 다음 URL 인증 또는 참조 인증을 수정하여 오류를 수정합니다.

명령줄에서 스마트 참조 작성

스마트 참조를 작성하려면 referral 및 extensibleObject 객체 클래스가 포함된 항목을 작성합니다. 참조 객체 클래스는 LDAP URL이 포함되는 ref 속성을 허용합니다. extensibleObject 객체 클래스를 사용하면 이름 지정 속성과 같은 스키마 속성을 이용하여 대상 항목과 일치시킬 수 있습니다.

예를 들어, uid=bjensen 항목 대신 스마트 참조를 반환하려면 아래 항목을 정의합니다.

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: referral
uid: bjensen
ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Sales,
 o=east,dc=example,dc=com


주

LDAP URL에서 공백 뒤의 정보는 서버에서 무시되므로 참조로 사용할 LDAP URL에는 공백 대신 %20을 사용해야 합니다. 다른 특수 문자는 이스케이프해야 합니다.


스마트 참조를 정의한 후에 uid=bjensen 항목을 수정하면 이 변경 사항이 실제로 다른 서버의 cn=Babs Jensen 항목에 적용됩니다. ldapmodify 명령은 다음과 같이 자동으로 참조를 따릅니다.

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: replace
replace: telephoneNumber
telephoneNumber: (408) 555-1234

스마트 참조 항목을 수정하려면 다음과 같이 ldapmodify의 -M 옵션을 사용해야 합니다.

ldapmodify -M -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: replace
replace: ref
ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Marketing,
 o=east,dc=example,dc=com


속성 값 암호화

속성 암호화는 디렉토리에 저장된 중요한 데이터를 보호합니다. 속성 암호화를 사용하여 항목의 특정 속성을 암호화 형식으로 저장하도록 지정하면 데이터베이스 파일, 백업 파일 및 내보낸 LDIF 파일에 저장된 데이터를 읽을 수 없습니다.

이 기능을 사용할 경우 속성 값은 Directory Server 데이터베이스에 저장되기 전에 암호화되고 원래 값으로 암호가 해독된 후 클라이언트로 반환됩니다. 액세스 제어를 사용하여 클라이언트가 권한 없이 이러한 속성에 액세스하지 못하도록 제한하고 SSL을 사용하여 클라이언트와 Directory Server 간에 전송되는 속성 값을 암호화해야 합니다. 일반적인 데이터 보안, 특히 속성 암호화에 대한 구조적 개요에 대해서는 Directory Server Deployment Planning Guide의 7장, "Access Control, Authentication, and Encryption"을 참조하십시오.

서버에 SSL이 구성 및 활성화되어 있는 경우에만 속성 암호화를 사용할 수 있으며 기본적으로 속성은 암호화되지 않습니다. 속성 암호화는 접미어 수준에서 구성되므로 속성은 해당 속성이 포함된 각 접미어 항목에서 암호화됩니다. 전체 디렉토리에서 특정 속성을 암호화하려면 모든 접미어에서 해당 속성을 암호화해야 합니다.


주의   

속성 암호화는 접미어와 관련된 모든 데이터 및 색인 파일에 영향을 줍니다. 기존 접미어의 암호화 구성을 수정하는 경우 반드시 구성 내용을 먼저 내보내서 원하는 대로 수정한 후에 다시 가져와야 합니다. 콘솔에서 단계별 작업에 대한 도움을 받을 수 있습니다.

또한, 암호화를 사용하는 경우 암호화되지 않은 값이 있는 데이터베이스 캐시 파일을 수동으로 삭제해야 합니다.

가능하면 새로운 접미어에 데이터를 로드하거나 작성하기 전에 암호화된 모든 속성을 활성화하는 것이 좋습니다.


일부 항목에서 이름 지정 속성으로 사용하는 속성을 암호화하도록 선택하면 DN에 표시된 값이 아닌 항목에 저장된 값이 암호화됩니다.

userPassword 속성을 암호화하도록 선택할 수도 있지만, DIGEST-MD5 SASL 인증과 같이 비밀번호를 단순 텍스트로 저장해야 하는 경우가 아니면 이 설정은 실제 보안에 전혀 도움이 되지 않습니다. 비밀번호 정책에 정의된 암호화 기법이 이미 비밀번호에 적용되어 있으면 추가 암호화를 적용해도 보안은 강화되지 않고 모든 바인드 작업의 성능만 저하됩니다.

저장 시 암호화 속성 앞에 사용된 암호화 알고리즘을 나타내는 암호화 태그가 표시됩니다. DES 암호화 알고리즘으로 암호화된 속성은 다음과 같이 나타납니다.

{CKM_DES_CBC}3hakc&jla+=snda%

콘솔에서 속성 암호화 구성

  1. Directory Server 콘솔의 구성 탭을 선택하고 데이터 노드를 확장한 다음, 암호화할 속성 값이 있는 접미어를 선택합니다. 오른쪽 패널에서 속성 암호화 탭을 선택합니다.
  2. 이 탭에는 현재 접미어에 대해 암호화된 모든 속성의 이름과 암호화 체계가 열거된 테이블이 포함되어 있습니다.

  3. 속성에 대한 암호화를 활성화하려면 다음을 수행합니다.
    1. 속성 추가 버튼을 눌러 속성 목록을 표시합니다.
    2. 목록에서 암호화할 속성을 선택하고 확인을 누릅니다. 테이블의 속성 이름 열에 해당 속성이 추가됩니다.
    3. 속성 이름 옆의 드롭다운 목록에서 이 속성의 암호화 체계를 선택합니다.
  4. 속성에 대한 암호화를 해제하려면 테이블에서 속성 이름을 선택하고 속성 삭제 버튼을 누릅니다.
  5. 저장을 누릅니다. 구성을 변경하기 전에 접미어 내용을 LDIF 파일로 내보내라는 메시지가 표시됩니다.
  6. 접미어 내보내기를 눌러 내보내기 대화 상자를 열거나, 속성 암호화 구성을 내보내지 않고 수정하려면 계속을 누릅니다. 그런 후에 새 구성이 저장됩니다.
  7. 아직 접미어를 내보내지 않은 경우에는 이때 접미어를 내보내야만 해당 내용을 저장할 수 있습니다. 접미어에 암호화된 속성이 포함되어 있고 다음 단계에서 이 LDIF 파일을 사용하여 접미어를 다시 초기화할 계획이면 내보낸 LDIF에서 접미어 암호화를 그대로 유지할 수 있습니다.

    LDIF 파일에서 접미어를 초기화하라는 메시지가 표시됩니다.

  8. 지금 접미어 초기화를 눌러 초기화 대화 상자를 열고 디렉토리에 로드할 LDIF 파일 이름을 입력합니다.
  9. 이전 단계에서 암호화된 속성이 포함된 접미어를 내보낸 경우, 암호화된 값은 접미어를 다시 초기화한 후에 복구할 수 없으므로 이 파일을 사용하여 지금 초기화해야 합니다. 파일을 로드하고 색인이 작성되는 동안 지정된 속성 값이 모두 암호화됩니다.

    이때 접미어를 초기화하지 않으려면 닫기를 누릅니다. 데이터 가져오기에 설명된 것처럼 나중에 데이터를 가져올 수 있습니다.

  10. 하나 이상의 속성을 암호화하도록 구성을 변경한 경우 가져오기 작업 전에 지정된 암호화되지 않은 일부 속성 값은 계속 데이터베이스 캐시에 표시될 수 있습니다. 데이터베이스 캐시를 지우려면 다음을 수행합니다.
    1. Directory Server 시작 및 중지에 설명된 것처럼 Directory Server를 중지합니다.
    2. 관리자 권한이 있는 root로 파일 시스템의 데이터베이스 캐시 파일을 삭제합니다.
    3. ServerRoot/slapd-serverID/db/__db.*

    4. Directory Server를 다시 시작합니다. 서버에서 자동으로 새 데이터베이스 캐시 파일을 작성합니다.

명령줄에서 속성 암호화 구성

  1. 속성 암호화를 구성할 접미어에 항목이 있으면 먼저 이 접미어의 내용을 LDIF 파일로 내보내야 합니다. 자세한 내용은 데이터 내보내기를 참조하십시오.
  2. 접미어에 암호화된 속성이 포함되어 있고 단계 5에서 이 LDIF 파일을 사용하여 접미어를 다시 초기화할 계획이면 내보낸 LDIF에서 접미어 암호화를 그대로 유지할 수 있습니다.

  3. 속성에 대한 암호화를 활성화하려면 ldapmodify 명령을 사용하여 아래 구성 항목을 추가합니다.
  4. ldapmodify -a -h host -p port -D cn=Directory Manager -p password
    dn: cn=attributeName, cn=encrypted attributes, cn=databaseName,
     cn=ldbm database, cn=plugins, cn=config
    objectclass: top
    objectclass: dsAttributeEncryption
    cn: attributeName
    dsEncryptionAlgorithm: cipherName

    여기서 attributeName은 암호화할 속성의 유형 이름이고, databaseName은 접미어에 해당하는 데이터베이스의 상징적인 이름이며, cipherName은 다음 중 하나입니다.

    • ckm_des_cbc - DES 블록 암호
    • ckm_des3_cbc - Triple-DES 블록 암호
    • ckm_rc2_cbc - RC2 블록 암호
    • ckm_rc4 - RC4 스트림 암호
  5. 속성에 대한 암호화를 해제하려면 ldapmodify 명령을 사용하여 아래 구성 항목을 수정합니다.
  6. ldapmodify -h host -p port -D cn=Directory Manager -p password
    dn: cn=attributeName, cn=encrypted attributes, cn=databaseName,
     cn=ldbm database, cn=plugins, cn=config
    changetype: modify
    replace: dsEncryptionAlgorithm
    dsEncryptionAlgorithm: clearText

    여기서 attributeName은 암호화할 속성의 유형 이름이고, databaseName은 접미어에 해당하는 데이터베이스의 상징적인 이름입니다.


    주

    속성 암호화 구성 항목은 삭제하지 마십시오. 다음에 접미어를 초기화하면 자동으로 삭제됩니다.


  7. 하나 이상의 속성을 암호화하도록 구성을 변경한 경우 가져오기 작업 전에 지정된 암호화되지 않은 일부 속성 값은 계속 데이터베이스 캐시에 표시될 수 있습니다. 데이터베이스 캐시를 지우려면 다음을 수행합니다.
    1. Directory Server 시작 및 중지에 설명된 것처럼 Directory Server를 중지합니다.
    2. 관리자 권한이 있는 root로 파일 시스템의 데이터베이스 캐시 파일을 삭제합니다.
    3.          ServerRoot/slapd-serverID/db/__db.*

    4. Directory Server를 다시 시작합니다. 서버에서 자동으로 새 데이터베이스 캐시 파일을 작성합니다. 캐시가 다시 채워질 때까지 해당 접미어의 작업 성능이 다소 느려질 수도 있습니다.
  8. 데이터 가져오기에 설명된 것처럼 LDIF 파일을 사용하여 접미어를 초기화합니다.
  9. 파일을 로드하고 해당 색인이 작성되는 동안 지정된 속성 값이 모두 암호화됩니다.


참조 무결성 유지

참조 무결성이란 관련된 항목 간의 관계를 유지하는 플러그 인 기법입니다. 그룹 구성원의 속성과 같이 다른 항목의 DN이 포함된 속성 유형이 있습니다. 참조 무결성을 사용하면 항목을 제거할 때 해당 DN이 포함된 모든 속성도 함께 제거됩니다.

예를 들어, 참조 무결성이 활성화된 상태에서 디렉토리의 사용자 항목을 제거하면 서버는 이 사용자가 구성원으로 속해 있는 모든 그룹에서 해당 사용자를 제거합니다. 참조 무결성을 사용하지 않으면 관리자가 수동으로 이 사용자를 그룹에서 제거해야 합니다. 이 기능은 디렉토리를 사용하여 사용자 및 그룹을 관리하는 다른 Sun Java System 제품과 Directory Server를 통합할 때 특히 유용합니다.

참조 무결성 작동 방식

활성화된 참조 무결성 플러그 인은 삭제 또는 이름 바꾸기 작업 후 즉시 지정된 속성에 대해 무결성 업데이트를 수행합니다. 기본적으로 참조 무결성 플러그 인은 사용되지 않습니다.

디렉토리에서 사용자 또는 그룹을 삭제하거나 이름을 바꾸면 해당 작업은 다음과 같이 참조 무결성 로그 파일에 기록됩니다.

ServerRoot/slapd-serverID/logs/referint

업데이트 간격이라는 지정된 시간 후에 서버는 참조 무결성이 활성화된 모든 속성에 대해 검색을 수행하고 검색 결과에 표시된 항목과 로그 파일에 있는 삭제 또는 수정된 항목의 DN을 비교합니다. 로그 파일에 항목이 삭제되었다고 표시되면 해당 속성은 삭제됩니다. 로그 파일에 항목이 변경되었다고 표시되면 해당 속성 값도 이에 따라서 수정됩니다.

활성화된 참조 무결성 플러그 인의 기본 구성은 삭제 또는 이름 바꾸기 작업 후 즉시 member, uniquemember, owner, seeAlso 및 nsroledn 속성에 대해 무결성 업데이트를 수행합니다. 하지만 사용자 요구에 맞게 다음과 같이 참조 무결성 플러그 인의 동작을 구성할 수 있습니다.

참조 무결성 구성

참조 무결성을 활성화 또는 비활성화하거나 Directory Server 콘솔에서 이 플러그 인을 구성하려면 아래 절차를 사용합니다.

콘솔에서 참조 무결성 구성

  1. Directory Server 콘솔의 최상위 구성 탭에서 플러그 인 노드를 확장하여 "Referential Integrity Postoperation" 플러그 인을 선택합니다.
  2. 오른쪽 패널에 플러그 인 설정이 표시됩니다.

  3. 플러그 인을 활성화하려면 플러그 인 사용 확인란을 선택하고 플러그 인을 비활성화하려면 플러그 인 사용 확인란을 선택 취소합니다.
  4. 인수 1의 값을 설정하여 업데이트 간격(초)을 수정합니다. 일반적인 값은 다음과 같습니다.
    • 0 - 모든 작업 후 즉시 업데이트. 이것이 기본값이며 모든 삭제 및 수정 작업 후에 즉시 참조 무결성 검사를 수행하면 서버 성능이 크게 저하될 수 있습니다.
    • 90 - 90초마다 업데이트
    • 3600 - 매 시간마다 업데이트
    • 10,800 - 3시간마다 업데이트
    • 28,800 - 8시간마다 업데이트
    • 86,400 - 매일 한 번 업데이트
    • 604,800 - 매주 한 번 업데이트
    • 무결성과 전체 성능을 고려하여 적절한 양수 값을 설정합니다.

  5. 인수 2의 값을 사용하려는 참조 무결성 로그 파일의 절대 경로로 설정합니다.
  6. 인수 3은 사용되지 않지만 반드시 있어야 합니다.

  7. 참조 무결성이 모니터되는 속성은 인수 4부터 열거됩니다. 추가 및 삭제 버튼을 눌러 이 목록을 관리하고 자신의 속성을 추가합니다.

  8. 주

    최상의 성능을 내려면 참조 무결성 플러그 인에서 업데이트하는 속성도 색인화해야 합니다. 자세한 내용은 10장, "디렉토리 데이터 색인화"를 참조하십시오.


  9. 저장을 눌러 변경 사항을 저장합니다.
  10. 변경 사항을 적용하려면 Directory Server를 다시 시작해야 합니다.

복제에 참조 무결성 사용

복제 환경에서 참조 무결성 플러그 인을 사용하는 경우 다음과 같은 몇 가지 제한 사항이 있습니다.

복제 토폴로지에 참조 무결성 플러그 인을 구성하려면 다음을 수행합니다.

  1. 모든 복제본이 구성되고 모든 복제 계약이 정의되어 있는지 확인합니다.
  2. 참조 무결성을 유지할 속성 집합을 지정합니다. 마스터 서버에서 사용할 업데이트 간격도 지정합니다.
  3. 모든 마스터 서버에서 동일한 속성 집합과 업데이트 간격을 사용하여 참조 무결성 플러그 인을 활성화합니다. 이 절차에 대해서는 참조 무결성 구성에서 설명합니다.
  4. 모든 소비자 서버에서 참조 무결성 플러그 인을 비활성화합니다.

레거시 복제에 참조 무결성 사용

참조 무결성을 사용하여 4.x 마스터에서 5.x 소비자로 복제하는 경우 4.x 마스터에서 참조 무결성 플러그 인을 다시 구성하여 참조 무결성 변경 사항을 4.x 변경 로그에 써야 합니다. 이렇게 하면 참조 무결성 변경 사항이 복제됩니다. 플러그 인을 다시 구성하지 않으면 참조 무결성이 올바로 작동하지 않습니다.

이 환경에서 참조 무결성 플러그 인을 다시 구성하려면 다음을 수행합니다.

  1. 4.x 서버를 중지합니다.
  2. ServerRoot/slapd-ServerID/config/에 있는 slapd.ldbm.conf 파일을 엽니다.
  3. 다음과 같이 시작되는 줄을 찾습니다.
  4. plugin postoperation on "referential integrity postoperation"

  5. 속성 목록 바로 앞에 있는 인수를 0에서 1로 변경하여 이 줄을 수정합니다.
  6. 예를 들어, 다음과 같은 줄이 있다고 가정합니다.

    plugin postoperation on "referential integrity postoperation" "ServerRoot/lib/referint-plugin.dll" referint_postop_init 0 "ServerRoot/slapd-serverID/logs/referint" 0 "member" "uniquemember" "owner" "seeAlso"

    이 줄을 다음과 같이 변경합니다.

    plugin postoperation on "referential integrity postoperation" "ServerRoot/lib/referint-plugin.dll" referint_postop_init 0 "ServerRoot/slapd-serverID/logs/referint" 1 "member" "uniquemember" "owner" "seeAlso"

  7. slapd.ldbm.conf 파일을 저장합니다.
  8. 서버를 다시 시작합니다.
  9. 4.x 공급자에서 5.x 소비자를 다시 초기화합니다.


디렉토리 검색

LDAP 클라이언트를 사용하여 디렉토리에서 항목을 찾을 수 있습니다. 대부분의 클라이언트는 디렉토리를 검색하고 항목 정보를 검색할 수 있는 특정 형식의 검색 인터페이스를 제공합니다.

디렉토리에 설정된 액세스 제어에 따라 검색 결과가 결정됩니다. 일반 사용자에게는 디렉토리의 상당 부분이 표시되지 않지만, 디렉토리 관리자는 구성을 포함한 모든 데이터에 액세스할 수 있습니다.

ldapsearch를 사용한 디렉토리 검색

ldapsearch 명령줄 유틸리티를 사용하여 디렉토리 항목을 찾고 검색할 수 있습니다. 이 절에서 설명하는 ldapsearch 유틸리티는 Solaris 플랫폼과 함께 제공되는 유틸리티가 아닌, Directory Server Resource Kit의 일부입니다. 이 유틸리티에 대한 자세한 내용은 Directory Server Resource Kit Tools Reference를 참조하십시오.

이 유틸리티는 지정된 사용자 아이디(일반적으로 고유 이름)와 비밀번호를 사용하여 서버에 연결한 다음, 검색 필터를 기반으로 항목을 찾습니다. 단일 항목, 항목의 직계 하위 항목, 전체 트리 또는 하위 트리 등을 검색 범위로 지정할 수 있습니다.

검색 결과는 LDIF 형식으로 반환됩니다.

ldapsearch 명령줄 형식

ldapsearch를 사용하는 경우 다음 형식으로 명령을 입력해야 합니다.

ldapsearch [optional_options] [search_filter] [optional_list_of_attributes]

조건:

특수 문자 사용

ldapsearch 명령줄 유틸리티를 사용할 때 명령줄 해석기에 특별한 의미가 있는 특정 문자(예: 공백 [ ], 별표 [*], 역슬래시 [\] 등)가 포함된 값을 지정해야 할 수도 있습니다. 이런 경우에는 특수 문자를 지정할 때 값을 인용 부호로 묶어서 입력합니다(" "). 예를 들면 다음과 같습니다.

-D "cn=Charlene Daniels,ou=People,dc=example,dc=com"

사용하는 명령줄 해석기에 따라 작은따옴표나 큰따옴표를 이스케이프 문자로 사용합니다. 자세한 내용은 쉘 설명서를 참조하십시오.

자주 사용되는 ldapsearch 옵션

아래에는 자주 사용되는 ldapsearch 명령줄 옵션이 열거되어 있습니다. 공백 [ ]이 포함된 값을 지정하는 경우 -b "ou=groups, dc=example,dc=com"과 같이 값을 큰따옴표로 묶어야 합니다.

-b

검색 시작점을 지정합니다. 현재 데이터베이스에 있는 고유 이름을 값으로 지정해야 합니다. LDAP_BASEDN 환경 변수가 기본 DN으로 설정되어 있으면 이 옵션은 선택 사항입니다.

이 옵션에 값을 지정할 때는 큰따옴표로 묶어야 합니다. 예를 들면 다음과 같습니다.

-b "cn=Charlene Daniels, ou=People, dc=example,dc=com"

-D

인증할 때 사용할 고유 이름을 서버에 지정합니다. 서버에서 익명 액세스를 지원하면 이 옵션은 선택 사항입니다. 옵션을 사용하려면 Directory Server에서 인식되는 DN으로, 항목을 검색할 수 있는 권한이 있는 값을 지정해야 합니다. 예를 들면 다음과 같습니다.

-D "uid=cdaniels, dc=example,dc=com"

-h

Directory Server가 설치된 시스템의 IP 주소나 호스트 이름을 지정합니다. 호스트를 지정하지 않으면 ldapsearch는 localhost를 사용합니다. 예를 들어, -h myServer와 같이 지정합니다.

-l

검색 요청이 완료될 때까지 기다리는 최대 초 수를 지정합니다. 여기에 지정한 값과 관계없이 ldapsearch는 결코 서버의 nsslapd-timelimit 속성이 허용하는 시간보다 오래 기다리지 않습니다(영구 검색 제외). 영구 검색에 대한 자세한 내용은 Directory Server Resource Kit Tools Reference의 3장, "ldapsearch"를 참조하십시오.

예를 들어, -l 300과 같이 지정합니다. nsslapd-timelimit 속성의 기본값은 3,600초(1시간)입니다.

-p

Directory Server에서 사용하는 TCP 포트 번호를 지정합니다. 예를 들어, -p 5201과 같이 지정합니다. 기본값은 389이고, SSL 옵션을 사용하는 경우 636입니다.

-s

검색 범위를 지정합니다. 범위는 다음 중 하나일 수 있습니다.

  • base - -b 옵션에 지정된 항목이나 LDAP_BASEDN 환경 변수로 정의된 항목만 검색합니다.
  • one - -b 옵션에 지정된 항목의 직계 하위 항목만 검색합니다. 하위 항목만 검색되고 -b 옵션에 지정된 실제 항목은 검색되지 않습니다.
  • sub - -b 옵션에 지정된 항목과 모든 하위 항목을 검색합니다. 즉, -b 옵션에 지정된 지점에서 시작하여 하위 트리 검색을 수행합니다. 이것이 기본값입니다.

-w

-D 옵션에 지정된 고유 이름에 해당하는 비밀번호를 지정합니다. 이 옵션을 지정하지 않으면 익명 액세스가 사용됩니다. 예를 들어, -w diner892와 같이 지정합니다.

-x

검색 결과가 클라이언트가 아닌 서버에서 정렬되도록 지정합니다. 이 옵션은 국제적인 검색과 같이 일치 규칙에 따라 정렬하려는 경우에 유용합니다. 서버측 정렬은 여러 자원을 사용하지만 일반적으로 클라이언트보다 서버에서 정렬하는 것이 더 빠릅니다.

-z

검색 요청에 응답하여 반환하는 최대 항목 수를 지정합니다. 예를 들어, -z 1000과 같이 지정합니다.

일반적으로 여기에 지정한 값과 관계없이 ldapsearch는 결코 서버의 nsslapd-sizelimit 속성에서 허용하는 수보다 많은 항목을 반환하지 않습니다. 그러나 이 명령줄 인수를 사용할 때 루트 DN으로 바인드하여 이 제한을 무시할 수 있습니다. 루트 DN으로 바인드하면 이 옵션은 기본적으로 0으로 설정됩니다. nsslapd-sizelimit 속성의 기본값은 2,000개의 항목입니다.

모든 ldapsearch 유틸리티 옵션에 대한 자세한 내용은 Directory Server Resource Kit Tools Reference를 참조하십시오.

ldapsearch 예

아래 예에서는 다음과 같이 가정합니다.

모든 항목 반환

앞에서 가정한 내용에 따라 다음 호출은 디렉토리에 있는 모든 항목을 반환합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -b "dc=example,dc=com" -s sub "(objectclass=*)"

"(objectclass=*)"는 디렉토리에 있는 모든 항목과 일치하는 검색 필터입니다.

명령줄에서 검색 필터 지정

명령줄에서 직접 검색 필터를 지정할 수 있습니다. 이렇게 하려면 필터를 인용 부호로 묶고("filter"), -f 옵션을 지정하지 마십시오. 예를 들면 다음과 같습니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -b "dc=example,dc=com" "(cn=Charlene Daniels)"

루트 DSE 항목 검색

루트 DSE는 지원되는 접미어 목록, 사용 가능한 인증 기법 등 현재 서버 인스턴스와 관련된 정보가 포함된 특수 항목입니다. 검색 기준을 " "로 지정하여 이 항목을 검색할 수 있습니다. 또한, 검색 범위를 base로, 필터를 "(objectclass=*)"로 지정해야 합니다. 예를 들면 다음과 같습니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -b "" -s base "(objectclass=*)"

스키마 항목 검색

Directory Server는 모든 디렉토리 서버 스키마를 특수 cn=schema 항목에 저장합니다. 이 항목에는 디렉토리 서버에 정의된 모든 객체 클래스와 속성에 대한 정보가 포함됩니다.

다음과 같이 이 항목의 내용을 확인할 수 있습니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -b "cn=schema" -s base "(objectclass=*)"


주

엄격한 준수를 위해 지정된 항목에 대한 스키마 하위 항목의 위치는 subschemaSubentry 작동 가능 속성으로 지정됩니다. 이 버전의 Directory Server에서는 속성 값이 항상 cn=schema로 설정됩니다.


LDAP_BASEDN 사용

편리한 검색을 위해 LDAP_BASEDN 환경 변수를 사용하여 검색 기준을 설정할 수 있습니다. 이렇게 하면 -b 옵션을 사용하여 검색 기준을 지정하지 않아도 됩니다. 환경 변수 설정 방법에 대한 자세한 내용은 운영 체제 설명서를 참조하십시오.

일반적으로 디렉토리의 접미어 값에 LDAP_BASEDN을 설정합니다. 디렉토리 접미어는 루트, 즉 디렉토리의 최상위 항목과 같기 때문에 이렇게 하면 모든 검색이 디렉토리의 루트 항목에서 시작합니다.

예를 들어, LDAP_BASEDN을 dc=example,dc=com으로 설정한 경우 다음 명령줄 호출을 사용하여 디렉토리에서 (cn=Charlene Daniels)를 검색할 수 있습니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 "(cn=Charlene Daniels)"

이 예에서는 -s 옵션을 사용하여 범위를 지정하지 않았기 때문에 기본 범위인 sub가 사용됩니다.

속성의 하위 집합 표시

ldapsearch 명령은 모든 검색 결과를 LDIF 형식으로 반환합니다. 기본적으로 ldapsearch는 항목의 고유 이름과 읽을 수 있는 모든 속성을 반환합니다. 지정된 디렉토리 항목에 대한 속성의 하위 집합만 읽을 수 있도록 디렉토리 액세스 제어를 설정할 수 있습니다. 작동 가능 속성만 반환되지 않습니다.

작동 가능 속성이 검색 결과로 반환되게 하려면 검색 명령에서 명시적으로 지정해야 합니다. 작동 가능 속성에 대한 자세한 내용은 Directory Server Administration Reference의 11장, "Operational Attributes"를 참조하십시오.

모든 속성이 검색 결과로 반환되는 것을 원하지 않는다고 가정합니다. 검색 필터 바로 뒤의 명령줄에서 원하는 속성을 지정하여 반환되는 속성을 몇 개의 특정 속성으로만 제한할 수 있습니다. 예를 들어, 디렉토리에 있는 모든 항목의 cn 속성과 sn 속성을 표시하려면 아래 명령을 실행합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 "(objectclass=*)" sn cn

이 예에서는 검색 기준을 LDAP_BASEDN으로 설정했다고 가정합니다.

여러 값을 갖는 속성 검색

검색 중에 Directory Server에서 여러 값을 갖는 속성을 반드시 정렬하여 반환하지는 않습니다. 예를 들어, 변경 사항이 적용되려면 서버를 다시 시작해야 하는 cn=config에 대한 구성 속성을 검색한다고 가정합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -b cn=config "(objectclass=*)" nsslapd-requiresrestart

다음 결과가 반환됩니다.

dn: cn=config
nsslapd-requiresrestart: cn=config:nsslapd-port
nsslapd-requiresrestart: cn=config:nsslapd-secureport
nsslapd-requiresrestart: cn=config:nsslapd-plugin
nsslapd-requiresrestart: cn=config:nsslapd-changelogdir
nsslapd-requiresrestart: cn=config:nsslapd-changelogsuffix
nsslapd-requiresrestart: cn=config:nsslapd-changelogmaxentries
nsslapd-requiresrestart: cn=config:nsslapd-changelogmaxage
nsslapd-requiresrestart: cn=config:nsslapd-db-locks
nsslapd-requiresrestart: cn=config:nsslapd-return-exact-case
nsslapd-requiresrestart: cn=config,cn=ldbm database,cn=plugins,
  cn=config:nsslapd-allidsthreshold
nsslapd-requiresrestart: cn=config,cn=ldbm database,cn=plugins,
  cn=config:nsslapd-dbcachesize
nsslapd-requiresrestart: cn=config,cn=ldbm database,cn=plugins,
  cn=config:nsslapd-dbncache
nsslapd-requiresrestart: cn=config,cn=ldbm database,cn=plugins,
  cn=config:nsslapd-directory
nsslapd-requiresrestart: cn=encryption,cn=config:nssslsessiontimeout

nsslapd-requiresrestart: cn=encryption,cn=config:nssslclientauth
nsslapd-requiresrestart: cn=encryption,cn=config:nssslserverauth
nsslapd-requiresrestart: cn=encryption,cn=config:nsssl2
nsslapd-requiresrestart: cn=encryption,cn=config:nsssl3
...

여기에 표시된 것처럼 nsslapd-requiresrestart 속성은 여러 값을 갖지만 값이 정렬되어 있지 않습니다. 여러 값을 갖는 속성을 정렬해서 표시하는 응용 프로그램을 개발하려면 응용 프로그램에서 정렬을 수행하도록 해야 합니다.

검색 시 클라이언트 인증 사용

이 예에서는 클라이언트 인증을 사용하여 디렉토리를 검색하는 사용자 cdaniels를 보여줍니다.

ldapsearch -h myServer -p 636 -b "dc=example,dc=com"
 -N "cdanielsscertname" -Z -W certdbpassword
 -P /home/cdaniels/certdb/cert.db "(givenname=Richard)"

LDAP 검색 필터

검색 필터는 검색 작업에 대해 반환되는 항목을 선택하며 ldapsearch 명령줄 유틸리티에서 자주 사용됩니다. ldapsearch를 사용할 때 여러 개의 검색 필터를 각 줄에 하나씩 입력하여 한 파일에 저장하거나 명령줄에서 직접 검색 필터를 지정할 수 있습니다.

예를 들어, 다음 필터는 일반 이름 Lucie Du Bois에 대한 검색을 지정합니다.

(cn=Lucie Du Bois)

이 검색 필터는 일반 이름 Lucie Du Bois가 포함된 모든 항목을 반환합니다. 일반 이름 값 검색은 대소문자를 구분하지 않습니다.

일반 이름 속성에 언어 태그와 관련된 값이 있으면 모든 값이 반환됩니다. 따라서 다음 두 속성 값은 이 필터와 모두 일치합니다.

cn: Lucie Du Bois

cn;lang-fr: Lucie Du Bois

검색 필터 구문

검색 필터의 기본 구문은 다음과 같습니다.

(attribute operator value)

예를 들면 다음과 같습니다.

(buildingname>=alpha)

이 예에서 buildingname은 속성, >=은 연산자, alpha는 값입니다. 여러 속성을 부울 연산자로 결합하여 필터를 정의할 수도 있습니다.

검색 필터에 대해서는 다음 절에서 자세히 설명합니다.

검색 필터에 속성 사용

항목을 검색할 때 해당 항목 유형과 관련된 속성을 지정할 수 있습니다. 예를 들어, people 항목을 검색할 때 cn 속성을 사용하여 특정 일반 이름을 가진 사용자를 검색할 수 있습니다.

people 항목에는 다음과 같은 속성이 포함될 수 있습니다.

각 항목 유형과 관련된 속성 목록은 Directory Server Administration Reference를 참조하십시오.

검색 필터에 연산자 사용

표 2-2에는 검색 필터에 사용할 수 있는 연산자가 나와 있습니다.

표 2-2 검색 필터 연산자 

검색 유형

연산자

설명

동일

=

지정된 값과 정확히 일치하는 속성 값을 포함한 항목을 반환합니다. 예를 들어, cn=Bob Johnson과 같이 지정합니다.

하위 문자열

=string*
string

지정된 하위 문자열이 포함된 속성을 가진 항목을 반환합니다. 예를 들면 다음과 같습니다.

cn=Bob*
cn=*Johnson
cn=*John*
cn=B*John

별표(*)는 0개 이상의 문자를 나타냅니다.

크거나 같음

>=

지정된 값보다 크거나 같은 속성 값을 포함한 항목을 반환합니다. 예를 들면 다음과 같습니다.

buildingname >= alpha

작거나 같음

<=

지정된 값보다 작거나 같은 속성 값을 포함한 항목을 반환합니다. 예를 들면 다음과 같습니다.

buildingname <= alpha

있음

=*

지정된 속성에 대한 값이 하나 이상 포함된 항목을 반환합니다. 예를 들면 다음과 같습니다.

cn=*

telephonenumber=*

manager=*

근사

~=

검색 필터에서 지정한 값과 대략 같은 값을 가진 지정된 속성을 포함한 항목을 반환합니다. 예를 들면 다음과 같습니다.

cn~=suret

l~=san fransico

could return

cn=sarette

l=san francisco

근사 연산자는 아직 시험 단계이며 영문 문자열에서만 작동합니다. Ja 또는 Zn과 같은 비ASCII 기반의 문자열에서는 작동하지 않습니다.

확장 연산자는 cn:dn:=John과 같이 검색을 dn 속성으로 확장하고 국제적인 검색을 지원합니다.

복합 검색 필터 사용

다음과 같이 부울 연산자를 접두어에 사용하여 여러 개의 검색 필터 구성 요소를 결합할 수 있습니다.

(Boolean-operator(filter)(filter)(filter)...)

여기서 Boolean-operator는 표 2-3에 열거된 부울 연산자 중 하나입니다.

부울 연산자를 결합하고 중첩하여 다음과 같은 복잡한 표현식을 작성할 수 있습니다.

(Boolean-operator(filter)(Boolean-operator(filter)(filter)))

검색 필터에 사용할 수 있는 부울 연산자는 다음과 같습니다.

표 2-3 검색 필터 부울 연산자 

연산자

기호

설명

AND

 &

명령문이 true가 되려면 지정된 모든 필터가 true여야 합니다.
예를 들면 다음과 같습니다.

(&(filter)(filter)(filter)...)

OR

 |

명령문이 true가 되려면 지정된 필터 중 적어도 한 개는 true여야 합니다.
예를 들면 다음과 같습니다.

(|(filter)(filter)(filter)...)

NOT

 !

명령문이 true가 되려면 지정된 명령문이 true가 아니어야 합니다. NOT 연산자는 한 개의 필터에만 적용됩니다. 예를 들면 다음과 같습니다.

(!(filter))

부울 표현식은 다음 순서로 평가됩니다.

파일을 사용한 검색 필터 지정

명령줄에서 입력하는 대신 검색 필터를 파일에 입력할 수 있습니다. 이렇게 하려면 각 줄에 한 개씩 파일에 검색 필터를 입력합니다. ldapsearch 명령은 파일에 열거된 순서대로 각 검색을 실행합니다.

예를 들어 다음 줄이 포함된 파일을 가정합니다.

(sn=Daniels)
(givenname=Charlene)

이 경우 ldapsearch는 먼저 성이 Daniels인 모든 항목을 찾은 후 이름이 Charlene인 모든 항목을 찾습니다. 두 검색 조건에 모두 일치하는 항목은 두 번 반환됩니다.

예를 들어, 앞의 검색 필터를 searchdb 파일에 지정하고 LDAP_BASEDN을 사용하여 검색 기준을 설정했다고 가정합니다. 아래 명령은 각 검색 필터에 일치하는 모든 항목을 반환합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -f searchdb

검색 줄 끝에 원하는 속성 이름을 지정하여 반환되는 속성 집합을 제한할 수 있습니다. 예를 들어, 아래 ldapsearch 명령은 두 검색을 모두 수행하지만 각 항목의 DN과 givenname 및 sn 속성만 반환합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 -f searchdb sn givenname

검색 필터에서 쉼표가 포함된 DN 지정

검색 필터 내의 DN에 쉼표가 값의 일부로 포함되어 있으면 역슬래시(\)로 쉼표를 이스케이프해야 합니다. 예를 들어, example.com Bolivia, S.A. 하위 트리에서 모든 사용자를 찾으려면 아래 명령을 실행합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password -s base -b "o=example.com Bolivia\, S.A.,dc=example,dc=com" "(objectclass=*)"

검색 필터 예

다음 필터는 manager 속성 값이 하나 이상 포함된 항목을 검색하며, 있음 검색이라고도 합니다.

(manager=*)

다음 필터는 일반 이름 Ray Kultgen이 포함된 항목을 검색하며, 동일 검색이라고도 합니다.

(cn=Ray Kultgen)

다음 필터는 하위 문자열 X.500이 포함된 설명 속성을 가진 모든 항목을 반환합니다.

(description=*X.500*)

다음 필터는 조직 구성 단위가 Marketing이고 설명 필드에 하위 문자열 X.500이 포함되지 않은 모든 항목을 반환합니다.

(&(ou=Marketing)(!(description=*X.500*)))

다음 필터는 조직 구성 단위가 Marketing이고 Julie Fulmer 또는 Cindy Zwaska가 관리자인 모든 항목을 반환합니다.

(&(ou=Marketing)(|(manager=cn=Julie Fulmer,ou=Marketing,
 dc=example,dc=com)(manager=cn=Cindy Zwaska,ou=Marketing,
 dc=example,dc=com)))

다음 필터는 사용자를 나타내지 않는 모든 항목을 반환합니다.

(!(objectClass=person))

앞의 필터를 사용하면 성능이 저하되므로 복잡한 검색의 일부로 사용해야 합니다. 다음 필터는 사용자를 나타내지 않고 일반 이름이 printer3b와 유사한 모든 항목을 반환합니다.

(&(cn~=printer3b)(!(objectClass=person)))

작동 가능 속성 검색

작동 가능 속성이 검색 결과로 반환되게 하려면 검색 명령에서 명시적으로 지정해야 합니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 "(objectclass=*)" aci

명시적으로 지정된 작동 가능 속성과 일반 속성을 모두 검색하려면 작동 가능 속성 외에 "*"를 지정합니다. 예를 들면 다음과 같습니다.

ldapsearch -h myServer -p 5201 -D "cn=directory manager" -w password
 "(objectclass=*)" aci *


DSMLv2를 사용한 디렉토리 액세스

다음 예는 DSML 요청을 사용하여 디렉토리에 액세스하고 검색하는 방법을 보여줍니다. DSML 관련 속성의 전체 목록과 DSMLv2 표준에 대한 자세한 내용은 Directory Server Administration Reference의 3장, "Frontend Plugin Attributes"를 참조하십시오.

이 절은 다음 예로 구성되어 있습니다.

이러한 예에서 content-length: 헤더는 DSMLv2 요청의 정확한 길이를 포함합니다. 예가 올바로 작동하려면 사용하는 편집기가 이러한 내용 길이를 지원하는지 확인하거나 적절하게 수정해야 합니다.

빈 익명 DSML "Ping" 요청

DSML 프런트엔드는 기본적으로 비활성화됩니다. 활성화하는 방법은 DSML 요청 사용을 참조하십시오. DSML 프런트엔드가 활성화되었는지 확인하려면 코드 예 2-1에 표시된 것처럼 빈 DSML 배치 요청을 보냅니다.

코드 예 2-1 빈 익명 DSML 요청

POST /dsml HTTP/1.1
content-length: 451
HOST: hostMachine
SOAPAction: ""
Content-Type: text/xml
Connection: close

<?xml version='1.0' encoding='UTF-8'?>
<soap-env:Envelope
   xmlns:xsd='http://www.w3.org/2001/XMLSchema'
   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/'>

   <soap-env:Body>
      <batchRequest
          xmlns='urn:oasis:names:tc:DSML:2:0:core'           requestID='Ping!'>
          <!-- empty batch request -->
      </batchRequest>
   </soap-env:Body>
</soap-env:Envelope>

이 DSML 요청의 첫 번째 섹션에는 HTTP 메소드 줄(POST /dsml HTTP/1.1)이 포함되어 있으며 뒤에 HTTP 헤더 수가 표시됩니다. HTTP 메소드 줄은 DSML 프런트엔드에서 사용할 URL과 HTTP 메소드 요청을 지정합니다. DSML 프런트엔드에서 허용하는 유일한 HTTP 메소드 요청은 POST입니다. Directory Server의 기본 URL은 /dsml이지만 다른 유효한 URL을 사용하여 구성할 수 있습니다. 뒤에 나오는 HTTP 헤더는 DSML 요청의 나머지 세부 정보를 지정합니다.

요청의 나머지 부분은 SOAP/DSML 섹션입니다. DSML 요청은 XML 프롤로그 헤더로 시작합니다.

<?xml version='1.0' encoding='UTF-8'?>

이 헤더는 요청을 UTF-8 문자 집합으로 인코딩해야 함을 지정합니다. 이 헤더 뒤에는 XML 스키마의 필수 포함, XML 스키마 인스턴스 및 SOAP 이름 공간이 포함된 SOAP 봉투 및 본문 요소가 있습니다.

DSML 배치 요청은 DSML 배치 요청 요소로 시작하며, 바로 뒤에 DSMLv2 이름 공간의 필수 포함이 옵니다.

xmlns='urn:oasis:names:tc:DSML:2:0:core'.

요청은 선택 사항인 다음 요청 아이디로 식별됩니다.

requestID='Ping!'>

빈 배치 요청은 다음과 같이 표시됩니다.

<!-- empty batch request -->

이것은 XML 주석으로 처리되며, SOAP/DSML 배치 요청은 배치 닫기 요청, SOAP 본문 닫기 및 SOAP 봉투 요소 닫기를 사용하여 닫힙니다.

DSML 프런트엔드를 활성화하면 빈 DSML 요청이 반환됩니다.

HTTP/1.1 200 OK
Cache-control: no-cache
Connection: close
Date: Mon, 09 Sep 2002 13:56:49 GMT
Accept-Ranges: none
Server: Sun-ONE-Directory/5.2
Content-Type: text/xml; charset="utf-8"
Content-Length: 500

<?xml version='1.0' encoding='UTF-8' ?>
<soap-env:Envelope
   xmlns:xsd='http://www.w3.org/2001/XMLSchema'
   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/'
   >
<soap-env:Body>
<batchResponse
   xmlns:xsd='http://www.w3.org/2001/XMLSchema'
   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns='urn:oasis:names:tc:DSML:2:0:core'
   requestID='Ping!'
   >
</batchResponse>
</soap-env:Body>
</soap-env:Envelope>

아무 것도 반환되지 않으면 프런트엔드가 비활성화되었다고 확신할 수 있습니다.

동시에 디렉토리에 연결하는 클라이언트 수와 DSML 요청 크기에 대한 최대 제한이 있습니다. 클라이언트 수에 대한 제한은 ds-dsml-poolsize 속성과 ds-dsml-poolmaxsize 속성으로 지정되고 요청 크기 제한은 ds-dsml-requestmaxsize 속성으로 지정됩니다. DSML 관련 속성에 대한 자세한 내용은 Directory Server Administration Reference의 2장, "Frontend Plug-In Attributes" 절을 참조하십시오.

DSML 요청 발급 및 특정 사용자로 바인드

DSML 요청을 발급하기 위해 지정된 사용자 또는 익명으로 디렉토리에 바인드할 수 있습니다. 지정된 사용자로 바인드하려면 요청에 dn으로 매핑되는 uid와 비밀번호가 포함된 HTTP 인증 헤더가 있어야 합니다.

샘플 HTTP 인증 요청은 다음과 같습니다.

POST /dsml HTTP/1.1
content-length: 578
Content-Type: text/xml; charset="utf-8"
HOST: hostMachine
Authorization: Basic ZWFzdGVyOmVnZw==
SOAPAction: ""
Connection: close

<?xml version='1.0' encoding='UTF-8'?>
<soap-env:Envelope
   xmlns:xsd='http://www.w3.org/2001/XMLSchema'
   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/'>
   <soap-env:Body>
     <batchRequest
        xmlns='urn:oasis:names:tc:DSML:2:0:core'
        <extendedRequest>
          <requestName>1.3.6.1.4.1.4203.1.11.3</requestName>
        </extendedRequest>
     </batchRequest>
   </soap-env:Body>
</soap-env:Envelope>

이 예에서 HTTP 인증 헤더는 uid를 더 쉽게 전송하며, 일반 텍스트에서 easter:egg로 표시되는 비밀번호 egg는 Authorization: Basic ZWFzdGVyOmVnZw==와 같이 base64로 인코딩됩니다.

<extendedRequest> 태그는 LDAP 확장 작업을 지정하는 데 사용됩니다. <requestName> 태그는 확장 작업의 OID를 지정하는 데 사용됩니다. 이 예에서 OID 1.3.6.1.4.1.4203.1.11.3은 whoami 확장 작업을 나타냅니다. whoami 확장 작업에 대한 자세한 내용은 http://www.ietf.org/internet-drafts/draft-zeilenga-ldap-authzid-08.txt를 참조하십시오.

익명 액세스에 엄격한 액세스 제어가 적용되는 경우도 많고 데이터 액세스 제한이 적용될 수도 있지만, 익명 액세스에는 HTTP 인증 헤더가 필요 없습니다. 이와 유사하게, DSML 요청을 발급하여 LDAP 프록시로 LDAP 작업을 수행할 수 있습니다.

DSML 요청은 배치별로 관리되기 때문에 LDAP 프록시로 요청을 발급하는 경우 필수 DSML 프록시 인증 요청이 지정된 요청 배치에서 첫 번째 항목이어야 합니다.

DSML 검색 요청

코드 예 2-2는 루트 DSE 항목에 대한 DSML 기본 객체 검색 요청을 보여줍니다.

코드 예 2-2 DSML 검색 요청

POST /dsml HTTP/1.1
HOST: hostMachine
Content-Length: 1081
Content-Type: text/xml
SOAPAction: ""
Connection: close

<?xml version='1.0' encoding='UTF-8'?>
<soap-env:Envelope
   xmlns:xsd='http://www.w3.org/2001/XMLSchema'
   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/'
   >
   <soap-env:Body>
      <batchRequest
        xmlns='urn:oasis:names:tc:DSML:2:0:core'
        requestID='Batch of search requests'
        >
        <searchRequest
            dn=""
            requestID="search on Root DSE"
            scope="baseObject"
            derefAliases="neverDerefAliases"
            typesOnly="false"
            >
            <filter>
               <present name="objectClass"/>
            </filter>
            <attributes>
               <attribute name="namingContexts"/>
               <attribute name="supportedLDAPversion"/>
               <attribute name="vendorName"/>
               <attribute name="vendorVersion"/>
               <attribute name="supportedSASLMechanisms"/>
            </attributes>
        </searchRequest>
      </batchRequest>
   </soap-env:Body>
</soap-env:Envelope>

이 예에서 각 항목은 다음을 나타냅니다.

필터와 일치하는 항목에 대해 objectclass 필터는 다음과 같이 사용됩니다.

<filter>
   <present name="objectClass"/>
</filter>

이 필터는 LDAP 필터 문자열(objectclass=*)과 같으며, 뒤에 원하는 속성 목록이 옵니다.

<attributes>
   <attribute name="namingContexts"/>
   <attribute name="supportedLDAPversion"/>
   <attribute name="vendorName"/>
   <attribute name="vendorVersion"/>
   <attribute name="supportedSASLMechanisms"/>
</attributes>



이전      목차      색인      다음     


Copyright 2004 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.