2018年10月19日 星期五

LDAP 探究 Part 3-Config 篇


LDAP 系列:

網路上的教學有很多說要去修改 slapd.conf 檔案,基本上這是一種過時的說法。

在OpenLDAP 新版,修改這份檔案並沒有用處(而且也沒有這個檔案給你改),你必須要修改 slapd.d/ 資料夾裡的東西才能達到你想要的結果,或者是使用 ldapmodify 指令。


Slapd.conf

官方建議使用命令列或是 ldif 檔方式來進行修改,所以不提供slapd.conf檔了。但是有保留導入slapd.conf的方式,所以可以自行建立 slapd.conf

如果你是透過 apt 來安裝的話,你可以在 /usr/share/slapd/slapd.conf 拿到一個 slapd.conf 的範例檔案。

注意,這個檔案無法直接匯入設定,必須要做一點修改才能拿來用。

slapd.conf 檔案格式

範例檔案長的大概像這樣,稍微說明一下該怎麼修改這份檔案。
同樣,為了不誤人子弟,只說明我理解的部份。

Include

檔案的開頭 include 指定你會匯入什麼樣的 objectClass。

因此若是你發現新增的時候,LDAP 告訴你沒有這個 ObjectClass 時,很有可能就是這邊沒有匯入你指定的 ObjectClass。但更高的可能是你打錯字……
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema


pidfile 與 argsfile 不知道所以跳過。

loglevel

# Read slapd.conf(5) for possible values
loglevel none

你可以在這裡指定你要的 log 等級,在 Openldap Doc 的 6.2.1.5. loglevel 可以查 logLevel

可以直接寫數字,數字的大小就是你要的 loglevel 數字相加。

# 假設要 sync (16384) 跟 config (64) 的 log 資訊,那 loglevel 就是 16384 + 64 = 16448
loglevel 16448
# 也可以直接寫 keyword
loglevel sync
loglevel config


moduleload

# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_mdb.la
moduleload syncprov.la

這邊會載入你所需要的 module ,因為我後面會作 Replication ,所以這邊額外載入了 syncprov 的 module
你可以在 /usr/lib/ldap 的路徑下看到你能載入的 module
順帶一提 back_mdb.la 是官方所推薦的 database 格式,但是先前的版本是不支援這個格式的,有碰到 database 錯誤的話,可能要注意一下。

backend

我們 module 載入 mdb ,沒道理這邊改用別的,填 mdb !
backend mdb

DIT

再下去就是建立一個 DIT 所需的資訊了。

database 同樣是 mdb
databse mdb

suffix 填你的 rootdn
suffix "dc=example,dc=com"

rootdn 就是登入 LDAP 操作所需的 root Acc
rootdn "cn=admin,dc=example,dc=com"
rootpw {SSHA}17/XQ0vmwCwP2RI1f9UnuwSoQYxNm0e+

rootdn的註解拿掉,填你要的帳號,admin or Manager 都可以,不要忘記就好。
這個帳號之後就是用來修改有關資料庫的資料 or 設定

那密碼是怎麼來的呢?
你必須執行 slappasswd,然後輸入兩次你要的密碼,它會吐一串字串回來給你,將這個字串貼到 rootpw 後,密碼就設定完成。



directory
放你的 database 檔案的地方,沒事的話就別動。

註解掉所有 dbconfig,不要問我為什麼~
似乎是 mdb 不適用於這些設定吧?


改掉接下來的所有 "@ADMIN@",改為你設定的 rootdn


這些都改完之後,就差不多要進入到下一步,讓 LDAP 吃進你的 slapd.conf 的設定。


以下步驟就是讓 LDAP 重新生成一個 slapd.d 的設定檔,堪稱是殺手鐧的絕招。
凡舉操作不順、資料錯誤、胸口鬱悶,此招一出通通清潔溜溜!不過之前的設定也會通通清潔溜溜,慎用慎用…
反正練習的時候弄壞了就可以這樣搞,正式環境可要三思一下,然後繼續這樣搞

$ rm -rf /etc/ldap/slapd.d/*
$ slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/
# 會出現 rootdn is always granted unlimited privileges. 的警告,無須理會
# 有 config file testing succeeded 即是成功,並確認 slapd.d 裡面有生成資料即可。
$ chown -R openldap:openldap /etc/ldap/*
$ service slapd start


結束後,下個 ldapsearch 來看看有沒有執行正常吧!
$ ldapsearch -xWD cn=admin,dc=example,dc=com
有跑出東西基本上就算成功了!

下一篇預計說一些有關 OpenLDAP 的指令操作~

LDAP 系列:


0 comments:

張貼留言