應公司要求 K了一點 LDAP 的東西,整理成筆記並分享出來,資料還不是很齊,陸續在補齊........


LDAP
LDAP 是一種目錄服務,可用來記錄人員的各種資訊,可以把他想成通訊錄,但是又更先進一點。對管理人員來說最好用的地方應該就是他可以整合帳號,讓所有的服務使用同一組帳號登入,當然前提是應用程式必須支援。



openLDAP
openLDAP 是 Linux 常見的 LDAP 軟體,許多 Linux 發行版本都有支援,像是 RedHat Enterprise Linux、fedora、CentOS 等等。



openLDAP 相關程式

slapd
openLDAP 的 daemon

slurpd
多個 LDAP 伺服器進行複寫時所用的程式



所需套件

openldap:openldap 基礎元件,預設一定會安裝。

openldap-servers:伺服器元件,若要做為 LDAP 伺服器就要安裝這個套件。

openldap-clients:用戶端元件



相關檔案及目錄

/etc/openldap:openldap 的主要目錄

/etc/openldap/slapd.conf:伺服器設定檔

/etc/openldap/cacerts:為一目錄,存放憑證相關資料

/etc/openldap/DB_CONFIG.example:資料庫設定檔範例

/etc/openldap/ldap.conf:用戶端設定檔

/etc/openldap/schema:為一目錄,存放綱要資料,簡單來說就是要支援哪種資料類型


slapd.conf
這是 openldap 主要的設定檔,語法規則如下:
 # 開頭為註解
 第一個字如果為 空格 代表這是上一行的延續,與ㄧ般使用 \ 符號不同。
 以空格或是 tab 鍵隔開參數與相對應的值。

以下介紹一些常用到的參數:

include:用來引入其他設定檔,較常見是引入綱要檔,像是:
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema

pidfile:此參數所指定的檔案,將會儲存目前正在執行的slapd的行程識別碼(process ID)
pidfile         /var/run/openldap/slapd.pid

argsfile:此參數所指定的檔案,將會包含目前正在執行slapd行程所使用的命令列參數
argsfile        /var/run/openldap/slapd.args


database:指定後端資料庫類型,預設為 bdb:
database        bdb

suffix:定義該 LDAP 伺服器中目錄資訊樹的尾碼,請依需求修改。底下第一行為預設第二行為我修改過後的:
suffix          "dc=my-domain,dc=com"
suffix          "dc=xiang,dc=idv,dc=tw"


rootdn:定義這個 LDAP 伺服器管理者的區別名稱,請依需求修改。底下第一行為預設第二行為我修改過後的:
rootdn          "cn=Manager,dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=xiang,dc=idv,dc=tw"


directory:資料庫的存放路徑
directory       /var/lib/ldap



管理密碼

密碼記錄於 slapd.conf 中,預設會註解掉,所以要自己把註解拿掉或是新增一行,格式如下所示,passwd 為你要設定的密碼:

rootpw    passwd

密碼可以直接使用明碼,也可以使用 slappasswd 這個程式來建立加密過後的密碼,執行 slappasswd 後會要求輸入密碼,共需要輸入兩次。最後一行就是加密過後的密碼,把整段貼在 rootpw 後面即可。

執行 slappsswd,最後一行為加密過後的密碼:
[root@CentOS53 openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}dKmbTeq19LgSL9tLKEiv7nyrkCJhaa83

這個範例的密碼就變成:
rootpw    {SSHA}dKmbTeq19LgSL9tLKEiv7nyrkCJhaa83


LDIF
全名為 LDAP Data Interchange Format LDAP資料交換格式。簡單來說就是一種語法,用來存取與呈現 LDAP 資料庫的資料,後面介紹如何新增節點與 user 資料,這個時機就會用到 LDIF。


LDIF 常見名詞
Entry:每筆儲存於 LDAP 資料庫的資料都稱為 Entry(項目)

Attribute:每個 Entry 會有自己的屬性,如下所示,NAME 為屬性名稱,VALUE 為屬性的值(僅能使用純文字):
    NAME:VALUE


ObjectClass:每個 項目 可以有多個屬性,而 ObjectClass(物件類別)則是用來訂義項目要有哪些屬性

DN:識別名稱


LDIF 格式

  • # 開頭為註解
  • 一行儲存一個屬性
  • 每個項目必須以 dn 開頭
  • 每個項目必須至少間格一行空白行


LDIF 常見屬性

dn:識別名稱
objectclass:物件類別
ou:組織單位
cn:通用名稱


LDIF 常見物件類別

organizationalUnit:組織單位
account:使用者帳號


新增組織節點
節點或者說是機關、部門等等,請依照需要設立,這裡示範新增 根節點 與一個自訂節點:

#root
dn: dc=fedora,dc=com,dc=tw
dc: fedora
objectClass: dcObject
objectClass: organizationalUnit
ou: fedora.com.tw

#staff
dn: ou=staff,dc=fedora,dc=com,dc=tw
ou: staff
objectClass: organizationalUnit


新增使用者資訊

#設定 吳怡君 通訊錄
dn: cn=li,ou=user,dc=xiang,dc=com
cn: li
sn: N/A
objectclass: person
objectclass: inetOrgPerson
givenName: 吳怡君
mail: c293831287@l-penguin.idv.tw
telephoneNumber: 02-29587572
mobile: 0939689593
postalAddress: 台北縣中和市景平路1號
postalCode: 235
ou: 人力資源部
title: 辦事員



常用指令

slapadd
新增項目(節點)到資料庫裡,另外要注意的是這個指令通常是在 ldap 未啟動的狀態下執行。常用選項如下:

-v:顯示詳細資訊
-l:後面接 ldif 檔案

[root@CentOS53 ~]# slapadd -v -l unit.ldif


ldapadd
新增或修改 LDAP 項目(節點)的工具。常用選項如下:

-x:使用簡易認證
-W:提示使用者輸入密碼
-D:後面接要修改的 dn,使用 "" 框起來 。
-f:後面接 ldif 檔案

[root@CentOS53 ~]# ldapadd -x -W -D 'cn=Manager,dc=mycompany,dc=com,dc=tw' -f staff.ldif


ldapmodify
修改 LDAP 的工具
-x:使用簡易認證
-W:提示使用者輸入密碼
-D:後面接要修改的 dn,使用 "" 框起來 。
-f:後面接 ldif 檔案

用來修改的 ldif 檔案有那麼一點不同,因為是要修改所以必須指定要修改的地方:

dn: cn=david,ou=user,dc=xiang,dc=com    要修改哪一筆資料
changetype: modify    改變的類別,modify 就是修改
replace: mail         要修改的屬性名稱
mail: test@mail       這裡則是指定要修改成甚麼樣子

另外要注意,如果要一次修改多個屬性,必須在每個屬性下面用 - 隔開。

底下是我修改的結果:
[root@CentOS53 schema]# ldapmodify -x -W -D "cn=Manager,dc=xiang,dc=com" -f modify.ldif
Enter LDAP Password:
modifying entry "cn=david,ou=user,dc=xiang,dc=com"



ldapsearch

搜尋 LDAP 資料的工具
-x:使用簡易認證
-b:搜尋條件

底下是我的搜尋結果,搜尋結果會依搜尋條件有所不同。

[root@CentOS53 ~]# ldapsearch -x -b "cn=Manager,dc=xiang,dc=com"
# extended LDIF
#
# LDAPv3
# base <cn=Manager,dc=xiang,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object
matchedDN: dc=xiang,dc=com

# numResponses: 1
[root@CentOS53 ~]# ldapsearch -x -b "dc=xiang,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=xiang,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# xiang.com
dn: dc=xiang,dc=com
dc: xiang
objectClass: dcObject
objectClass: organizationalUnit
ou: xiang.com

# user, xiang.com
dn: ou=user,dc=xiang,dc=com
ou: user
objectClass: organizationalUnit

# \E5\90\B3\E6\80\A1\E5\90\9B, user, xiang.com
dn:: Y2495ZCz5oCh5ZCbLG91PXVzZXIsZGM9eGlhbmcsZGM9Y29t
cn:: 5ZCz5oCh5ZCb
sn: N/A
objectClass: person
objectClass: inetOrgPerson
givenName:: 5ZCz5oCh5ZCb
mail: c293831287@l-penguin.idv.tw
telephoneNumber: 02-29587572
mobile: 0939689593
postalAddress:: 5Y+w5YyX57ij5Lit5ZKM5biC5pmv5bmz6LevMeiZnw==
postalCode: 235
ou:: 5Lq65Yqb6LOH5rqQ6YOo
title:: 6L6m5LqL5ZOh

# david, user, xiang.com
dn: cn=david,ou=user,dc=xiang,dc=com
cn: david
sn: N/A
objectClass: person
objectClass: inetOrgPerson
givenName: david
mail: dd@l-penguin.idv.tw
telephoneNumber: 02-29587577
mobile: 0939689500
postalAddress: Taipei
postalCode: 233
ou:: 5Lq65Yqb6LOH5rqQ6YOo
title: SE

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries: 4




ldapdelete

-r:加上這個參數會把節點下(包含該節點)的所有資料刪除
-x:使用簡易認證
-W:提示使用者輸入密碼
-D:後面接要修改的 dn,使用 "" 框起來 。



openldap 實做建置步驟


1.安裝 openldap-servers
[root@CentOS53 ~]# yum install openldap-servers -y

2.建立 LDAP 密碼
[root@CentOS53 openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}dKmbTeq19LgSL9tLKEiv7nyrkCJhaa83


3.修改 slap.conf
[root@CentOS53 openldap]# vi slapd.conf
依照實際狀況修改,底下三個一定要改
suffix          "dc=xiang,dc=idv,dc=tw"
rootdn          "cn=Manager,dc=xiang,dc=idv,dc=tw"
rootpw        {SSHA}dKmbTeq19LgSL9tLKEiv7nyrkCJhaa83


4.複製資料庫格式
[root@CentOS53 openldap]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG


5.新增節點資料
[root@CentOS53 openldap]# slapadd -v -l /etc/openldap/schema/root.ldif


6.修改資料庫目錄權限,因為我不是用 ldap 帳號去建立的,所以在啟動 ldap 服務的時候可能會發生錯誤,因此必須先變更擁有者。
[root@CentOS53 openldap]# chown -R ldap:ldap /var/lib/ldap/


7.啟動 LDAP 服務
[root@CentOS53 openldap]# service ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]


9.新增使用者資料
[root@CentOS53 openldap]# ldapadd -x -W -D "cn=Manager,dc=xiang,dc=com" -f /etc/openldap/schema/staff.ldif



arrow
arrow
    全站熱搜

    xiangyang17 發表在 痞客邦 留言(0) 人氣()