Linux 安裝並配置 OpenLDAP 新編(7)第三方工具
Linux 安裝並配置 OpenLDAP 新編(7)第三方工具
前面經過多個章節的學習,應該基本瞭解了 OpenLDAP 的部署知識,在前面的操作中,我們都是用命令列的方式,對於系統初始化配置來說自然沒什麼問題。但是對於長期的運維來說,這確實是非常不友好的一件事,本章就來講一講有哪些第三方的圖形化管理工具。
Apache Directory Studio
正如其名,是由 Apache 基金會提供的一個開源軟體,有獨立的執行版本,也有 Eclipse 的外掛版本。由於資料較多,不再贅述,預設情況下不會顯示條目的隱藏屬性,可以通過下面的方式啟用:
在連結屬性中,點選 Browser Options
Ldap Admin
Ldap Admin也是一個老牌的管理客戶端,使用比較簡單也不再贅述。同樣的,預設情況下不會顯示條目的隱藏屬性,可以通過下面的方式啟用:
在連結屬性中,點選 Attributes 標籤後,勾選下面的 Show operational attributes 後,點選右側的 Add 按鈕新增其他想要顯示的隱藏屬性。
Ldap Account Manager
除了客戶端的管理工具之外,還有許多基於 PHP 開發的Web管理工具,只是比較讓人無語的一點是,都2022年了,為什麼一講起管理端都是講 phpLdapAdmin
個人強烈推薦 Ldap Account Manager ,它同樣是一款基於 php 開發的Web管理工具,雖然有收費版本,但是免費版基本適用於多數情況。為了省事,後面統一簡稱為 lam 。
安裝依賴環境
除了安裝必要的 php 環境之外,還需要下面的一些元件,為了省事這裡只列出了yum方式安裝的,起來的類似。
yum install php-ldap php-xml php-gd php-zip php-gmp php-json php-mbstring -y
密碼管理
剛開始使用 lam 時,比較懵逼的一點是, lam 中有三處密碼,而這很容易引起混淆。這三個密碼分別為:伺服器配置檔案 密碼、通用設定 密碼以及 LDAP服務端 密碼,請注意區分。其中的 通用設定 密碼預設為 lam 。
編輯伺服器資料
初次執行,需要先配置服務端資料配置,點選右上角的 LAM configuration 後根據提示建立新的配置資料。伺服器設定檔案主要分為4個標籤:
通用設定
點選 通用設定 標籤,配置 工具設定 中的 樹狀結構字尾 與 安全設定 中的 合法使用者列表。
帳號型別
點選 帳號型別 標籤,配置 啟用帳號型別 中 使用者 和 組 的 LDAP字尾配置項。
登入系統
登入系統時,需要輸入的密碼是 LDAP 伺服器端配置的初始密碼。第一次進入系統,會提示是否為 帳號型別 設定LDAP字尾,確認提示資訊和我們配置的資訊一致後點擊 建立 。
使用方式
這裡的資料也十分豐富,此處也不再贅述。
Self Service Password
在使用者的管理中,密碼管理是其中不可或缺的一部分。而允許所有人登入伺服器直接修改密碼也不現實,因此我們可以使用一個第三方工具來允許使用者自行修改自己的密碼。這個工具叫: Self Service Password 。
同前面嗯 lam 一樣,這是一個基於php開發的web專案,當然你也可以通過其他方式安裝,只是我覺得php部署比較簡單而已。只是唯一要吐槽的是,它基於 Smarty 模板引擎開發,因此再使用前還要先安裝 Smarty3 引擎,不過這個十分簡單,就不再贅述了。
安裝依賴環境
yum install php-ldap php-gd php-mbstring php-curl php-filter -y
配置
關於php以及相關web server轉發的配置,這裡也不再贅述,只單純說下本身的配置。配置檔案是位於根目錄的 conf 目錄中的 config.inc.php 檔案,但是官方並不建議直接修改這個檔案,而是複製出一個 config.inc.local.php 檔案,覆寫裡面的配置值:
<?php
// file: config.inc.local.php
// Override config.inc.php parameters below
$lang = "cn";
$keyphrase = "9bwXF1i0sCjGalfT";
$ldap_binddn = "cn=admin,dc=example,dc=com";
$ldap_bindpw = '這裡是dn的明文密碼';
$ldap_base = "dc=example,dc=com";
?>
遺漏的思考
在上一章啟用memberof的結尾,我們提到了關於 groupOfNames 型別的組,不一定適用於 posixAccount 型別的使用者物件。但是經過實測,也是可以生效的,所以比較納悶為什麼網上的資料,都提到要使用 groupOfUniqueNames 型別等等。而且也未能搜尋出兩者有何根本的區別,似乎僅僅是名字的區別,再者 groupOfNames 物件是使用 member 屬性來關聯,而 groupOfUniqueNames 物件,是使用 uniqueMember 屬性來關聯。
當然,即便是有必須要使用 groupOfUniqueNames 的理由,也不是問題,只需要再新增一個 Overlay 即可。程式碼如下:
# enable_memberof_posix.ldif
dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: memberof
olcMemberOfRefint: TRUE
olcMemberOfDangling: ignore
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf
對比前面的配置,可以就看到,區別是在於 olcMemberOf 物件的 olcMemberOfGroupOC 和 olcMemberOfMemberAD 這兩個屬性不同,即 Overlay 所關聯的物件和屬性不同,而最終對映到使用者物件上的屬性, 則都是由 olcMemberOfMemberOfAD 屬性所指定的 memberof 。