Step 1. 首先檢查 OpenLDAP是否安裝
[root@benjr ~]# rpm -avq | grep ldap openldap openldap-clients openldap-servers nss_ldap
這些套件主要包含了 OpenLDAP 所必須的函式庫,應用程式以及工具.
- openldap
這套件包含了 OpenLDAP Server 以及 Client 應用程式所需的函式庫和工具. - openldap-clients
這套件包含了檢視,查詢,修改 OpenLDAP Server 目錄服務的命令列工具. - openldap-servers
這套件包含了 OpenLDAP Server 的主程式,Standalone LDAP Daemon (/usr/sbin/slapd)) 以及 Standalone LDAP Update Replication Daemon (/usr/sbin/slurpd) 以及設定 OpenLDAP 的工具. - nss_ldap
必主要是想要用 OpenLDAP 做身分驗證的 Linux Clinet 所必備的套件.
檢查一下是否安裝.沒有安裝就繼續下一個步驟.安裝完成請跳至第三個步驟.
Step 2. 安裝 OpenLDAP
在 RHEL 5 DVD 光碟片中的目錄 Server 可以找到所需的程式
[root@benjr ~]# mount /media/rhel5 [root@benjr ~]# rpm -ivh /media/rhel5/openldap…..rpm [root@benjr ~]# rpm -ivh /media/rhel5/openldap-clients…..rpm [root@benjr ~]# rpm -ivh /media/rhel5/openldap-servers…..rpm [root@benjr ~]# rpm -ivh /media/rhel5/nss_ldap….rpm
Step 3. 檢查 OpenLDAP 服務是否啟動
預設 openldap 是關閉的,想要在開機時啟動 openldap 使用 chkconfig 將 Runlevel 2,3,4,5 都在開機時啟動服務.
[root@benjr ~]# chkconfig ldap on [root@benjr ~]# chkconfig –list ldap ldap 0:off 1:off 2:on 3:on 4:on 5:on 6:on
現在我們也可以直接將 openldap 服務啟動.
[root@benjr ~]# service ldap start Starting ldap services: [ OK ]
Step 4. OpenLDAP 的設定檔
openldap 的設定檔位於 /etc/openldap 目錄中,其中有兩個主要的設定檔以及一個目錄.
- /etc/openldap/ldap.conf
主要是給客戶端應用程式 (clients Application) 來使用.如 ldapsearch,ldapadd 等程式. - /etc/openldap/slapd.conf
這就是 openldap Daemon 服務主要的設定檔,接下來就會講述這一個設定檔. - /etc/openldap/schema/
schema 目錄是一個很重要的目錄,系統支援屬性皆定義在此.
現在來看看 /etc/openldap/slapd.conf 的內容.
[root@benjr ~]# vi /etc/openldap/slapd.conf # $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.8.8.7 2001/09/27 20:00:31 kurt Exp $ # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/redhat/rfc822-MailMember.schema include /etc/openldap/schema/redhat/autofs.schema include /etc/openldap/schema/redhat/kerberosobject.schema ………………略…………………………… ################################################## # ldbm database definitions ################################################## database dbd suffix "dc=benjr,dc=tw" #suffix "o=fortop,c=tw" rootdn "cn=root,dc=benjr,dc=tw" #rootdn "cn=root,o=fortop,c=tw" # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. #rootpw secret rootpw {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd/tools. Mode 700 recommended. directory /var/lib/ldap # Indices to maintain index objectClass,uid,uidNumber,gidNumber,memberUid eq index cn,mail,surname,givenname eq,subinitial # Replicas to which we should propagate changes #replica host=ldap-1.example.com:389 tls=yes # bindmethod=sasl saslmech=GSSAPI # authcId=host/ldap-master.example.com@EXAMPLE.COM
一開始有許多的 include ,這些是關於 schema 我們稍後再談.
LDAP 的架構如同 DNS 是以階層式的架構來做管理,所以一開始我們需要為自己的 LDAP 定一個 Domain 通常使用自己公司的網域名稱.不過沒硬性規定命名方式.這邊我以我的網域 benjr.tw 為範例
suffix "dc=benjr,dc=tw"
接下來我們需要為 LDAP 設定一個管理者
rootdn "cn=root,dc=benjr,dc=tw"
其管理者 CN 可為任意,為後面所接的 domain 必須為剛剛所指定 benjr.tw ,這管理者將會是這 LDAP 的最高權限管理者.
在 LDAP 目錄中每一個物件都有一個唯一個 DN(Distinguished Name) ,他是由條目 (entry) 與屬性 (attribute) 所集合組成的.所以一開始的管理者也是一個 DN ,其後面固定為 Domain 而這 DN 必須是唯一的 DN.
接下來是為這管理者設定密碼.這裡的密碼不是以明碼的方式來呈現,所以無法直接在這裡輸入,需使用指令slappasswd 來建立雜湊演算法的密碼, 而 slappasswd 除了預設的 SSHA 可用外還提供了 {CRYPT},{MD5},{SMD5},{SHA} 等 on-way hash 方式來當密碼,可以用 -h scheme 來指定.可以用 slappasswd 指令來產生管理者的密碼
[root@benjr ~]# slappasswd New password Re-enter new password {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
接下來再拷到 /etc/openldap/sldap.conf 的 rootpw 即可(怎麼拷,可以用滑鼠的左右鍵來做).
root 管理使用者密碼
rootpw {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
重新啟動 openldap
[root@benjr ~]# service ldap restart Stopping slapd: [ OK ] Checking configuration files for slapd: bdb_db_open: Warning – No DB_CONFIG file found in directory /var/lib/ldap: (2) Expect poor performance for suffix dc=benjr,dc=tw. config file testing succeeded [ OK ] Starting slapd: [ OK ]
系統預設使用的資料庫是 dbd ,但一開始我們的 DB_CONFIG 檔案是不存於目錄 /var/lib/ldap 下,而 DB_CONFIG 這個檔案設定了 index 的快取數量並且可以調整系統效能,直接從 /etc/openldap/DB_CONFIG.example 複製即可.
[root@benjr ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
在使用 ldapsearch,ldapadd 等指令時我們可以指定 BDN(Base Distinguished Name),也就是篩選條件.不過每次都要自己輸入 BDN 不是很聰明的作法. ldapsearch, ldapadd 這些指令會依據 /etc/openldap/ldap.conf 所指定的 BDN(Base Distinguished Name) 作為篩選條件.所以先將 /etc/openldap/ldap.conf 做修改.方式只要把 /etc/openldap/ldap.conf 的 BASE 改成 /etc/openldap/slapd.conf 所指定的網域即可.
[root@benjr ~]# vi /etc/openldap/ldap.conf BASE dc=benjr,dc=tw
檢查 openldap server 是否正常啟動且設定是否正確
[root@benjr ~]# ldapsearch -x -b ' ' -s base '(objectclass=*)' namingContexts . . dn: namingContexts:dc=benjr,dc=tw . .
你至少會看到以上兩行,這樣就大致完成了 LDAP 伺服器端的安裝,但是 LDAP 中沒有任何一筆資料的存在.接下來的一章就是要在 LDAP 中新增資料了LDAP-帳號伺服器 https://benjr.tw/27692
在 ubuntu 要使用 openldap 需要透過 apt-get 安裝下列套件