天天看點

LUNIX LDAP的配置資訊

    • LDAP
    • LDAP常用關鍵字清單
    • LDAP支援的目錄操作
    • Berkeley DB安裝
    • OpenLDAP安裝步驟
    • OpenLDAP配置步驟
    • 啟動OpenLDAP伺服器
    • 檢查slapd程序是否已經正常啟動
    • 資料導入

LDAP(Lightweight Directory Access Protocol)代表輕型目錄通路協定,是用來通路目錄服務(如基于X.500的目錄服務)的輕型協定,它運作在TCP/IP或其他面向連接配接的傳輸服務之上。LDAP目錄基于客戶/伺服器方式實作。

LDAP的資訊模型是建立在“條目”(entries)的基礎上。一個條目是一些屬性的集合,并且具有一個全局唯一的“可區分名稱”DN,一個條目可以通過DN來引用。每一個條目的屬性具有一個類型和一個或者多個值。類型通常是容易記憶的名稱,比如“cn”是通用名稱(common name) ,或者“mail”是電子郵件位址。條目的值的文法取決于屬性類型。比如,cn屬性可能具有一個值“Babs Jensen” 。一個mail屬性可能包含“[email protected]” 。一個jpegphoto屬性可能包含一幅JPEG(二進制)格式的圖檔。 各個元素之間的關系如圖一所示

LUNIX LDAP的配置資訊

LDAP通過屬性objectClass來控制哪一個屬性必須出現或允許出現在一個條目中,它的值決定了該條目必須遵守的模式規則。

dc

Domain Component

域名的部分,其格式是将完整的域名分成幾部分,如域名為example.com變成dc=example,dc=com

uid

User Id

使用者ID,如“tom”

ou

Organization Unit

組織機關,類似于Linux檔案系統中的子目錄,它是一個容器對象,組織機關可以包含其他各種對象(包括其他組織單元),如“market”

cn

Common Name

公共名稱,如“Thomas Johansson”

sn

Surname

姓,如“Johansson”

dn

Distinguished Name

惟一辨識名,類似于Linux檔案系統中的絕對路徑,每個對象都有一個惟一的名稱,如“uid= tom,ou=market,dc=example,dc=com”,在一個目錄樹中DN總是惟一的

rdn

Relative dn

相對辨識名,類似于檔案系統中的相對路徑,它是與目錄樹結構無關的部分,如“uid=tom”或“cn= Thomas Johansson”

c

Country

國家,如“CN”或“US”等。

o

Organization

組織名,如“Example, Inc.”

包括:查詢目錄、更新目錄、增加條目、删除條目、改變條目名稱,搜尋資訊,最常用的LDAP操作是搜尋資訊操作。LDAP搜尋操作允許搜尋目錄的一部分,查找比對某個搜尋過濾器規則的條目,搜尋在 dc=example,dc=com 條目之中或者之下的整個目錄子樹,查找一個名字叫做 Barbara Jensen 的個人,并且擷取每一個找到的條目的電子郵件位址

  • Berkeley DB安裝

    因為OpenLDAP将資料存放在資料庫中,是以安裝部署OpenLDAP之前首先要安裝Berkeley DB。該資料庫可以在Oracle的官方網站上下載下傳到,

    下載下傳位址為:http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html

    安裝資料庫步驟:

    1) # tar zxvf db-5.2.36.tar.gz 或者 # unzip db-5.2.36.NC.zip

    2) # cd db-5.2.36/build_unix

    3) # ../dist/configure //預設安裝在/usr/local目錄下可以通過../dist/configure –prefix=你的路徑

    4) # make //開始安裝

    5) # make install

  • Berkeley DB配置

    安裝OpenLDAP過程中,在./configure時,遇到錯誤checking if Berkeley DB version supported by BDB/HDB backends… no configure: error: BerkeleyDB version incompatible with BDB/HDB backends,這是因為沒有安裝Berkeley DB或是安裝了Berkeley DB,但是系統找不到他的頭檔案和lib的庫,這時需要添加一些環境變量,步驟如下:

    1) # export CPPFLAGS=”-I/usr/local/BerkeleyDB.5.2/include”

    2) # export LDFLAGS=”-L/usr/local/lib -L/usr/local/BerkeleyDB.5.2/lib -R/usr/local/BerkeleyDB.5.2/lib”

    3) # export LD_LIBRARY_PATH=”/usr/local/BerkeleyDB.5.2/lib”

    4) # env LDFLAGS=-L/usr/local/lib -L/usr/local/BerkeleyDB.5.2/lib -R/usr/local/BerkeleyDB.5.2/lib

    HOSTNAME=mylinux

    TERM=vt100

    SHELL=/bin/bash

    HISTSIZE=1000

    CPPFLAGS=-I/usr/local/BerkeleyDB.4.8/include

    SSH_CLIENT=::ffff:192.168.0.10 3336 22

    OLDPWD=/apps/openldap

    SSH_TTY=/dev/pts/2

    USER=root

    LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.8/lib

安裝之前首先要下載下傳OpenLDAP,下載下傳位址http://www.openldap.org/software/download/

1) [root@localhost tmp]# tar zxvf openldap-stable-20120311.tgz

2) [root@localhost tmp]# cd openldap-2.4.30

3) [root@localhost openldap-2.4.30]# ./configure –prefix=/usr/local/openldap –enable-bdb

注:–prefix用于更改安裝目錄,預設安裝在/usr/local下

Making servers/slapd/backends.c

Add config …

Add ldif …

Add monitor …

Add bdb …

Add hdb …

Add relay …

Making servers/slapd/overlays/statover.c

Add seqmod …

Add syncprov …

Please run “make depend” to build dependencies

看到這些資訊時,說明已經configure完畢。

4) [root@localhost openldap-2.4.30]# make depend

Making depend in /apps/openldap/openldap-2.4.30

Entering subdirectory include

make[1]: Entering directory

/apps/openldap/openldap-2.4.30/include’ Making ldap_config.h make[1]: Leaving directory

/apps/openldap/openldap-2.4.30/include’

….

Entering subdirectory man5

make[3]: Entering directory

/apps/openldap/openldap-2.4.30/doc/man/man5′ make[3]: Nothing to be done for

depend’.

make[3]: Leaving directory

/apps/openldap/openldap-2.4.30/doc/man/man5′ Entering subdirectory man8 make[3]: Entering directory

/apps/openldap/openldap-2.4.30/doc/man/man8′

make[3]: Nothing to be done for

depend’. make[3]: Leaving directory

make[2]: Leaving directory

/apps/openldap/openldap-2.4.30/doc/man’ make[1]: Leaving directory

/apps/openldap/openldap-2.4.30/doc’

5) [root@localhost openldap-2.4.30]# make

……………………….

done

/apps/openldap/openldap-2.4.30/doc/man/man8′ make[2]: Leaving directory

/apps/openldap/openldap-2.4.30/doc/man’

make[1]: Leaving directory `/apps/openldap/openldap-2.4.30/doc’

注:make depend比較快,但是,make可能要花點時間

6) [root@localhost openldap-2.4.30]# make test

該操作檢視是否build成功,(整個過程會花上幾分鐘),如果成功,會顯示如下資訊:

Test succeeded

./scripts/test000-rootdse completed OK.

Starting test001-slapadd …

running defines.sh

7) [root@localhost openldap-2.4.30]# make install

注:運作make install開始安裝,建議以源碼安裝的軟體都放到獨立的目錄下,不要放在預設的路徑下,要不然解除安裝的時候會很麻煩。安裝到一個目錄下,隻要删除目錄就可以解除安裝了。

OpenLDAP主配置檔案slapd.conf,該配置檔案一般儲存在安裝目錄下的etc/openldap/目錄下。它的初始内容如下

[root@localhost openldap]# cat slapd.conf

See slapd.conf(5) for details on configuration options.

This file should NOT be world readable.

include /usr/local/etc/openldap/schema/core.schema

Define global ACLs to disable default read access.

Do not enable referrals until AFTER you have a working directory

service AND an understanding of referrals.

referral ldap://root.openldap.org

pidfile /usr/local/var/run/slapd.pid

argsfile /usr/local/var/run/slapd.args

Load dynamic backend modules:

modulepath /usr/local/libexec/openldap

moduleload back_bdb.la

moduleload back_hdb.la

moduleload back_ldap.la

Sample security restrictions

Require integrity protection (prevent hijacking)

Require 112-bit (3DES or better) encryption for updates

Require 63-bit encryption for simple bind

security ssf=1 update_ssf=112 simple_bind=64

Sample access control policy:

Root DSE: allow anyone to read it

Subschema (sub)entry DSE: allow anyone to read it

Other DSEs:

Allow self write access

Allow authenticated users read access

Allow anonymous users to authenticate

Directives needed to implement policy:

access to dn.base=”” by * read

access to dn.base=”cn=Subschema” by * read access to *

by self write

by users read

by anonymous auth

if no access controls are present, the default policy

allows anyone and everyone to read anything but restricts

updates to rootdn. (e.g., “access to * by * read”)

rootdn can always read and write EVERYTHING!

#

BDB database definitions

database bdb

suffix “dc=my-domain,dc=com”

rootdn “cn=Manager,dc=my-domain,dc=com” Cleartext passwords, especially for the rootdn, should

be avoid. See slappasswd(8) and slapd.conf(5) for details.

Use of strong authentication encouraged.

rootpw secret

The database directory MUST exist prior to running slapd AND

should only be accessible by the slapd and slap tools.

Mode 700 recommended.

directory /usr/local/var/openldap-data

Indices to maintain

index objectClass eq

1) 設定LDAP使用的Schema

[root@localhost openldap]# vi slapd.conf

找到語句:

include /usr/local/etc/openldap/schema/core.schema

在該語句的後面添加以下語句:

include /usr/local/etc/openldap/schema/corba.schema

include /usr/local/etc/openldap/schema/cosine.schema

include /usr/local/etc/openldap/schema/dyngroup.schema

include /usr/local/etc/openldap/schema/inetorgperson.schema

include /usr/local/etc/openldap/schema/java.schema

include /usr/local/etc/openldap/schema/misc.schema

include /usr/local/etc/openldap/schema/nis.schema

include /usr/local/etc/openldap/schema/openldap.schema

2) 設定目錄樹的字尾

将其改為:

suffix “dc=example,dc=com”

3) 設定LDAP管理者的DN

rootdn “cn=Manager,dc=my-domain,dc=com”

rootdn “cn=root,dc=example,dc=com”

4) 設定LDAP管理者的密碼

rootpw 123456

注:修改密碼的時候需要注意rootpw前面不能有空格,以及rootpw與密碼之間用TAB鍵隔開。

5) #設定資料庫的存放路徑

注:2,3,4部分可以根據需要進行修改!!!

啟動OpenLDAP服務需要執行以下指令:

/usr/local/libexec/slapd

注:如果沒有出錯資訊,直接傳回shell,就說明伺服器正常啟動了。如果啟動不成功,他會提示一些出錯資訊,多數是slapd.conf配置出錯引起的。

執行指令:# pstree|grep “slapd”

如果出現 |-slapd—{slapd} 則說明slapd程序已經成功啟動

測試通路目錄的能力:

[root@localhost openldap]# ldapsearch -x -b ” -s base ‘(objectclass=*)’ namingContexts

如果正确配置了伺服器,應該看到類似于下面的輸出(當然,有不同的 dc):

資料導入的方式主要有四種:1. 手工輸入;2. .ldif檔案格式錄入;3. 腳本自動錄入;4. 用戶端工具錄入。

(1) 手工輸入

1) 建立DN

[root@localhost ~]# ldapadd -x -D’cn=root,dc=topsec,dc=com’ -W

Enter LDAP Password:

dn:dc=topsec,dc=com

objectclass:top

objectclass:domain

dc:topsec

o:Topsec,Inc 此處回車後按Ctrl+D将資料發送給伺服器,并隐式取消與伺服器的綁定

adding new entry “dc=topsec,dc=com”

2) 建立OU

[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W

dn:ou=headerquarters,dc=topsec,dc=com

ou:headerquarters

objectclass:organizationalUnit 此處表明ou是必需的屬性

adding new entry “ou=headerquarters,dc=topsec,dc=com”

3) 建立RDN

dn:cn=Ava Green,ou=test,dc=topsec,dc=com

cn:Ava

sn:Green

objectclass:inetOrgPerson

adding new entry “cn=Ava Green,ou=test,dc=topsec,dc=com”

ldap_add: No such object (32)

matched DN: dc=topsec,dc=com

注:出現此錯誤的原因是它的父節點還沒有建立,需要先建立節點ou=test,dc=topsec,dc=com。

建立過程如下:

dn:ou=test,dc=topsec,dc=com

ou:test

objectclass:organizationalUnit

adding new entry “ou=test,dc=topsec,dc=com”

接下來繼續上述過程:

成功~(≧▽≦)/~啦啦啦!!!!

注:上面概述的過程使用三個基本的 LDAP 操作:綁定操作、更新操作和隐式取消綁定操作。

(2) 檔案輸入

将資料插入 LDAP 目錄的第二種方法是使用 LDIF 檔案。LDIF 檔案隻是包含想要插入的以特定文法編排的資料的純文字文檔。上面我們已經熟悉了文法:dn: 後跟樹中存儲項的位置,然後跟一個或多個 RDN 項(包含資料的類型/值對),後跟必需的對象類。要建立 LDIF,使用純文字編輯器,然後輸入想要添加到目錄中的資料。

以下是示例檔案example.ldif檔案的内容:

o:Topsec,Inc

dn:ou=managers,dc=topsec,dc=com

ou:managers

objectclass:organizationalUnit

dn:cn=Kevin,ou=managers,dc=topsec,dc=com

cn:Kevin

sn:Black

objectclass:person

dn:ou=employees,dc=topsec,dc=com

ou:employees

dn:cn=Mary,ou=employees,dc=topsec,dc=com

cn:Mary

sn:Brown

objectclass:person

[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W -f example.ldif

adding new entry “ou=managers,dc=topsec,dc=com”

adding new entry “cn=Kevin,ou=managers,dc=topsec,dc=com”

繼續閱讀