Bước đầu tiên trong việc thực hiện một thư mục là xác định thơng tin gì để lưu trữ trong thư mục. Bối cảnh đặt tên của máy chủ được định nghĩa là:
DC = plainjoe, dc = org
Lưu trữ thơng tin liên lạc cho các nhân viên trong mục people
ou = people , dc = plainjoe, dc = org
Cĩ một số cách để xác định dữ liệu phụ thuộc vào tình trạng của mỗi nhân viên. Thơng tin được lưu trữ trong một cơ sở dữ liệu nguồn nhân lực hiện cĩ cĩ thể cung cấp một điểm bắt đầu tốt . Tất nhiên, bạn cĩ thể khơng muốn đặt tất cả các thơng tin này trong thư mục của bạn. Như một quy luật chung, tơi khơng muốn đưa thơng tin trong một thư mục nếu dữ liệu đĩ cĩ lẽ sẽ khơng được sử dụng. Nếu nĩ chỉ ra rằng dữ liệu là thực sự cần thiết, bạn luơn cĩ thể thêm nĩ sau này. Loại bỏ dữ liệu khơng cần thiết khi bắt đầu là điều quan trọng hơn so với việc lo lắng về việc bảo vệ thư mục chống truy cập trái phép.
Một cách khác để bắt đầu với một cơ sở dữ liệu hiện cĩ là xác định những thuộc tính nhân viên bạn muốn làm cho cĩ sẵn và xác định một giản đồ để phù hợp với danh sách đĩ. Bạn cĩ thể chọn một lược đồ tiêu chuẩn và sử dụng các thuộc tính đã được định nghĩa. Cách tiếp cận này rất được ưa dùng bởi vì nĩ giúp bạn dễ dàng thay đổi từ một nhà cung cấp khác. Lược đồ sử dụng rộng rãi, tiêu chuẩn cĩ nhiều khả năng được hỗ trợ bởi một loạt các nhà cung cấp. Tuỳ chỉnh, lược đồ trong nhà cĩ thể cần phải được thiết kế lại để thích ứng với một người bán hàng mới (hoặc thậm chí là một phiên bản mới từ nhà cung cấp tương tự).
Đối với thư mục của bạn, giản đồ inetOrgPerson được định nghĩa trong RFC 2798 là quá đủ. Từ phần 3.5.1 trong chương 3, chúng ta biết rằng đối tượng lớp và thuộc tính liên kết này được định nghĩa trong OpenLDAP của inetorgperson.schema tập tin. Như thể hiện trong con số 4-1, một inetOrgPerson là kế thừa của organizationalPerson
Hình 4.1 Hệ thống các lớp đối tượng inetOrgPerson
Sự kết hợp của các lớp đối tượng sẽ định nghĩa tập thuộc tính cần thiết và tùy chọn cĩ sẵn. Điều này cĩ nghĩa rằng các thuộc tính yêu cầu duy nhất trong một đối tượng inetOrgPerson là các thuộc tính cn và sn cĩ nguồn gốc từ lớp đối tượng person .
Thư mục của bạn sẽ sử dụng các thuộc tính cn để RDN cho mỗi mục. Hãy nhớ rằng RDN mục nhập phải là duy nhất trong số các mục ngang cấp của cùng một thư mục gốc . Trong tổ chức lớn hơn, hai people cĩ thể giống họ và tên. Trong những trường hợp này, bằng cách sử
dụng một giá trị cụ thể hơn cho cn, chẳng hạn như trong đĩ cĩ một tên đệm (hoặc ban đầu), cĩ thể làm giảm bớt tên giống nhau
Một cách để giảm số lượng tên giống nhau là thiết kế lại giao diện thư mục để giảm tổng số người dùng mục chia sẻ một thư mục gốc . Nĩi cách khác, nhĩm nhân viên trong một tập hợp chứa hợp lý, ví dụ như một đơn vị tổ chức khoa. Hình 4-2 minh hoạ cách thiết kế này tránh xung đột khơng gian tên. Trong thư mục này "John Arbuckle" trong bán hàng là khác nhau từ "John Arbuckle" trong kỹ thuật bởi vì các mục cĩ các nút cha mẹ khác nhau.
Hình 4-2 Sử dụng đơn vị tổ chức để tránh va chạm của tên gọi phổ biến (cn)
Ví dụ của chúng tơi, đi với một tập hợp chứa duy nhất của ou = people là tốt ; hơn nữa, cơ sở nhân viên của chúng tơi là nhỏ, đủ để sử dụng một nhân viên tên chung (cn) mà khơng sợ bị xung đột. Hình 4-3 cho thấy khơng gian tên thư mục được phát triển cho đến nay.
Đây là một nhân viên cĩ chứa các thuộc tính cần thiết cho thư mục của chúng tơi. Chú ý rằng các thuộc tính yêu cầu hai vạch ra trong con số 4-1, cn và sn, hiện tại thêm vào một số tùy chọn thuộc tính.
## LDIF entry for employee "Gerald W. Carter"
dn: cn=Gerald W. Carter,ou=people,dc=plainjoe,dc=org objectClass: inetOrgPerson cn: Gerald W. Carter sn: Carter mail: jerry@plainjoe.org mail: gcarter@valinux.com labeledURI: http://www.plainjoe.org/ roomNumber: 1234 Dudley Hall departmentNumber: Engineering telephoneNumber: 222-555-2345 pager: 222-555-6789
mobile: 222-555-1011
Sâu hoặc rộng?
Là nĩ tốt hơn để duy trì một cây cạn (và rộng) hoặc một thư mục sâu (và hẹp)? Cấu trúc tốt nhất cho thư mục của bạn phụ thuộc vào hai yếu tố.
Trước tiên, làm thế nào cĩ thể cĩ để thay đổi để buộc một mục (trong trường hợp của chúng tơi, một người) được chuyển từ một đơn vị tổ chức khác? Câu trả lời cho câu hỏi này dựa trên một sự hiểu biết vững chắc về tổ chức của bạn và nhu cầu của nĩ. Cây thư mục sâu hơn hàm ý rằng mục nhập phải đáp ứng yêu cầu bộ phải được đặt trong một thùng chứa một số. Ví dụ, thay vì đặt tất cả nhân viên theo ou = người, bằng cách sử dụng đặc tính, chẳng hạn như phịng ban, mơ tả cơng việc và vị trí địa lý làm cho một nhĩm được xác định hơn. Tuy nhiên, nếu những đặc điểm là cĩ khả năng thay đổi thường xuyên, bạn sẽ chỉ tạo ra nhiều việc cho chính mình trong dài hạn. Nĩ cũng là tốt để lưu ý rằng sâu thư mục yêu cầu dài DNs để tham khảo mục. Điều này cĩ thể trở thành một ít phiền tối theo thời gian.
Việc thực hiện của bạn phục vụ LDAP mục ưu tiên một thiết kế hơn một thứ hai? Cho OpenLDAP, câu trả lời này phụ thuộc vào nhu cầu của bạn. Yếu tố quyết định sẽ là số lượng các bản Cập Nhật, hoặc viết, mà sẽ được thực hiện vào thư mục. Để cập nhật các mục nhập, máy chủ slapd lấy được một khĩa vào mục nhập phụ huynh cho các khách hàng yêu cầu. Bây giờ giả sử bạn cĩ một cây thư mục rất nơng với 10.000 mục dưới một phụ huynh đơn. Nếu thơng tin Cập Nhật nhiều xảy ra cùng một lúc, ganh đua cho khĩa vào mục nhập phụ huynh sẽ rất cao. Kết quả cuối cùng sẽ là Cập Nhật chậm hơn bởi vì quá trình sẽ chặn chờ đợi cho các khĩa.
Một cây sâu hơn cĩ nghĩa là bạn cĩ thể thường làm cho tìm kiếm hiệu quả hơn bằng cách cho một tìm kiếm chi tiết hơn cơ sở. Để biết thêm chi tiết về việc thiết kế khơng gian tên LDAP, bạn cĩ thể đọc Howes, et al., sự hiểu biết và triển khai LDAP Directory Services
3. Cập Nhật slapd.conf
Một khi giản đồ đã được lựa chọn, bước tiếp theo là để sửa đổi slapd.conf để hỗ trợ các thuộc tính được chọn loại và đối tượng lớp học. Để hỗ trợ inetOrgPerson đối tượng lớp, bạn phải cĩ inetorgperson.schema, core.schema và cosine.schema trong slapd.conf. Inetorgperson.schema phác thảo dựa vào lược đồ COSIN . Dưới đây là những sửa đổi nhiệm vụ chia vùng địa phương của slapd.conf:
# /usr/local/etc/openldap/slapd.conf
# Global section
## Include the minimum schema required.
include /usr/local/etc/openldap/schema/core.schema
## Added to support the inetOrgPerson object.
include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema
## Added logging parameters
Phần cơ sở dữ liệu là hiện đang trong điều kiện làm việc, do đĩ chỉ cĩ một số thay đổi là cần thiết. Để hỗ trợ tốt hơn tìm kiếm cho nhân viên, bạn nên sửa đổi các thiết lập chỉ số một danh sách hồn chỉnh hơn các thuộc tính. Ngồi việc tạo ra một chỉ số cho các thuộc tính cn, bạn sẽ cũng lập bảng chỉ dẫn họ (sn) và địa chỉ email (thư) thuộc tính. Thêm vào chỉ số trung bình (eq), bạn sẽ thêm một chỉ số chuỗi con (phụ) để hỗ trợ tìm kiếm như "Tất cả các nhân viên mà qua tên bắt đầu bằng C." Cuối cùng, bạn sẽ thêm một chỉ số bình đẳng cho thuộc tính departmentNumber do đĩ người dùng cĩ thể tìm kiếm nhân viên trong một vùng nhất định. Chỉ số này sẽ khơng cần thiết nếu thư mục đã được đặt ra như thể hiện trong con số 4-2 bởi vì cùng một kết quả cĩ thể đạt được bởi bắt đầu tìm kiếm tại vùng ou. Dưới đây là những thay đổi vào phần cơ sở dữ liệu:
## Indexes to maintain
index objectClass eq index cn,sn,mail eq,sub
index departmentNumber eq
Tại thời điểm này, nĩ là một ý tưởng tốt để kiểm chứng rằng vị trí xác định bởi tham số thư mục tồn tại và cĩ quyền truy cập thích hợp. Trong ví dụ của chúng tơi, thư mục đĩ là /var/ldap/plainjoe.org. Nếu thư mục này khơng tồn tại, hai lệnh sau đây đảm bảo rằng hệ thống tập tin đã sẵn sàng để lưu trữ dữ liệu:
root# mkdir -p /var/ldap/plainjoe.org root# chmod 700 /var/ldap/plainjoe.org