2024年4月11日发(作者:)

LDAP 概念与架设

現今網路常用的服務,以 HTTP、Mail 和 File System (Samba) 為最常用的服

務,然而在這些常用的服務裡,會有使用者帳號的問題,每當要使用 Mail 時要

輸入 Mail 的帳號密碼,存取 File System 要有 File System 帳號密碼,再更

多的服務就要記更多的帳號密碼,小弟曾看過某機關,一位承辦人居要要背五組

以上的的帳號密碼,而每兩個月又要修改一次,想想看這是多麼恐怖的一件事。

LDAP 是一種目綠服務,可使用 LDAP 記錄各種的人員資訊,就像是通訊錄一樣,

又更進階一點,他也可以拿來做帳號整合,若是在 AP 上都有所支援,那麼要使

用同一組帳號秘碼就不再是難以搞定的事了。

在小弟等當兵的這一段日子裡,打算使用 LDAP 來做 Linux login

(new window)

Postfix

(new window)

、Samba、HTTP 等帳號密碼整合。所以,我將會寫一系列的

LDAP 整合文章,當然,太深入、難以說明或是太過於理論的地方我都不會講,

因為這只是筆記,我會儘量說明清楚。為了要讓閱讀本文章的讀者們可以更容易

的找到相關書籍,我在文章裡也會提供參考圖書或網頁的資料。

無論如何,小弟只對 Redhat Linux 的部份較為熟悉,所以在以下文章裡所提到

的 LDAP,其實是指 OpenLDAP 套件,跟 Microsoft 的 Active Directory 沒有

關係,因為小弟對 AD 也不熟。

在這個章節裡,我將要介紹基本的 LDAP 觀念和如何使者用 ldap command 來新

增、查尋資料。而在實作的環境裡,我是使用 CentOS 4.0,也就是說若您的系

統是使用 CentOS 4、Redhat Enterprise Linux 4、Fedora Core 3 或 Fedora Core

4 的話應該都可以照著本文章實作,當然,CentOS 4.0 裡附的 OpenLDAP 版本

是 openldap-2.2。

安裝

要實作 LDAP 的話,當然一定要安裝 LDAP 套件了,包含了 server 及 devel 相

關的套件,你可以查看系統有無 LDAP Server 套件。

root # rpm -qa | grep openldap

openldap-2.2.13-2

openldap-devel-2.2.13-2

openldap-servers-2.2.13-2

openldap-clients-2.2.13-2

root #

若沒有的話,可使用 CentOS 4 光碟所附的 RPM 來安裝就可以了。

root # rpm -ivh openldap*

~ 中間略 ~

root #

規劃

其實 LDAP 也不用想得太難,把他想成資料庫的一種就對了,對於有資料庫設計

經驗的人應該不成問題,但是若你之前都沒有碰過,那就把 LDAP 想成組織圖一

樣就可以了,只是這個組織圖是在你腦海裡浮現,所以你最好要再準備一張紙,

把你的架構畫出來才行。就我這次提供的組織來看,大約是以下這樣:

/

login company

/ /

user group unit customer

/ |

mis account hr

為了這次的實做,我把這個 分成主要兩個部份,login 部份

是用來做有關 login 的資料,所有有關 login 的機制都是放在這裡。而

company 裡面,就只單純提供通訊錄的查尋而已。而這個架構圖,在之後的 LDAP

系列文件裡,還會出現,我現在的實做,是以 -> company ->

unit 這個路線走,在最後的結果,可以查到在每個部份下的人員。

Note: 這個部份,我還沒有講到 LDAP 的表示法,主要是

要讓各位讀者明白,在使用 LDAP 之前要先有一個架構,

畫出來再依圖實做就會很好理解。這個部份,可以參考

LDAP 系統管理 第二章 LDAPv3 概論。

LDAP 表示法

若要表示一筆人員記錄,可使用:

cn=user name,ou=gourp,dc=your,dc=domain

若是以本例來說,在 mis 部門下有一位 steven,那麼對於這位 steven 的表示

法為:

cn=steven,ou=mis,ou=unit,ou=company,dc=l-penguin,dc=idv,dc=tw

這一長串,我們稱之為一個 dn 值,在 LDAP 的表示方法都是由小到大,也就是

人名先表示、再表示部門、單位(這和老外的門牌表示法是一樣的意思)。

當然,經過這麼一說你就可以知道 cn 值在同一個 ou 下是不可以重複的,就是

說在 ou=mis 下不可以有兩位 steven,不然就照成資料重複。當然,在同一公

司裡叫 steven 的人可能到處跑,但是同一部門下同時叫 steven 的機率就就會

降低了。