1. 程式人生 > >Openldap服務端centos7搭建過程

Openldap服務端centos7搭建過程

交互 sch usr 記錄 cdata 簡單的 data 手動 color

一:前言

目前網上有很多的Openldap服務端搭建教程,但是大部分其實都還是6的部署過程,許多朋友在centos7下按照網上的文檔進行部署,會發現根本沒有主配置文件,加上我自己踩過的一些坑,在這篇文檔裏,我把centos7下部署Openldap的過程再梳理一遍。

二:知識準備

1:根據我最近學習到的,我認為ldap就是一個賬戶認證服務,通過單服務端多客戶端的方式,每新增一個客戶端服務器,都可以簡單的通過ldap客戶端配置來將大批量用戶加入系統當中,可以省去很多時間。


2:為了更好地在centos7上搭建openldap的服務端,有一些基礎知識必須掌握,否則部署過程中一頭霧水,出錯也沒有排查思路,推薦大家閱讀下面這篇文章。https://cloud.tencent.com/developer/article/1026304


3.必須掌握的我認為有以下幾個方面
1)主要簡稱含義
o-> organization(組織-公司)
ou-> organization unit(組織單元-部門)
c-> countryName(國家)
dc-> domainComponent(域名)
sn-> suer name(真實名稱)
cn-> common name(常用名稱)


2)目錄型數據庫的理解
對於下面這張圖,如果我們要獲取到一個cn是ldap,也就是右下角的那個用戶,那麽我們有且僅有一條路徑,也就是
dn: cn=ldap, ou=group, o=dlw.com
其中dn是ldif文件當中每個條目都具有的一條,而且對於每一個條目是唯一的,當然dc可以是在最上面的,ou也可以是在最上面的,同樣的,他們的下面也可以在延伸出來新的dc或者ou

技術分享圖片


3)了解schema
在LDAP中,schema用來指定一個目錄中所包含的對象(objects)的類型(objectClass),以及每一個類型(objectClass)中必須提供的屬性(Atrribute)和可選的屬性。可將schema理解為面向對象程序設計中的類,通過類定義一個具體的對象。LDIF中的數據條目可理解為是一個具體的對象,是通過schema來規劃創建的。因此,schema是一個數據模型,用來決定數據按什麽方式存儲,並定義存儲在不同的條目(Entry)下的數據之間的關系。schema需要在主配置文件slapd.conf中指定,以用來決定在目錄中可以使用哪些objectClass。


4)了解objectClass
LDAP中,一個條目必須包含一個objectClass屬性,且需要賦予至少一個值。每一個值將用作一條LDAP條目進行數據存儲的模板;模板中包含了一個條目必須被賦值的屬性和可選的屬性。


5)LDIF文件格式
LDIF用文本格式表示目錄數據庫的信息,以方便用戶創建、閱讀和修改。在LDIF文件中,一個條目的基本格式如下:
註意(ldif文件中的內容,需要註意的是,每個冒號後面都需要空一格,而每行結束處不能留有空格字符)

註釋
dn: 條目名
屬性描述: 值
屬性描述: 值
屬性描述: 值
... ...

dn行類似於關系數據庫中一條記錄的關鍵字,不能與其他dn重復。一個LDIF文件中可以包含多個條目,每個條目之間用一個空行分隔。 例如,以下內容組成一個條目:

1: dn: dc=dlw, dc=com
2: objectclass: top
3: objectclass: dcobject
4: objectclass: organization
5: dc: dlw
6: o: dlw,Inc.

在以上文本中,各行含義如下: 第1行的dn定義該條目的標識。 第2~4行定義該條目的objectcCass,可以定義多個屬性,如上面代碼中定義了3個objectClass。條目的屬性根據objectClass的不同而不同,有的objectClass有必須設置的屬性。在2~4行的3個objectClass中,top沒有必須定義的屬性,dcobject必須定義屬性dc,用來表示一個域名的部分,而organization必須定義屬性o,用來表示一個組織的名稱。 根據objectClass的要求,第5、6行分別定義屬性dc和屬性o的值。


6)ldap命令

-x:進行簡單認證。
-D:用來綁定服務器的dn。
-w:綁定dn的密碼。
-b:指定要查詢的根節點。
-H:制定要查詢的服務器。
-h:目錄服務的地址

主要是
添加,將name.ldif文件中的條目加入到目錄中

ldapadd -x -D "cn=root,dc=dlw,dc=com" -w secret -f name.ldif

查找,使用ldapsearch命令查詢“dc=dlw, dc=com”下的所有條目

ldapsearch -x -b "dc=dlw,dc=com"

修改,分為交互式修改和文件修改,推薦文件修改
將sn屬性由“Test User Modify”修改為“Test User”

dn: cn=test,ou=managers,dc=dlw,dc=com
changetype: modify
replace: sn
sn: Test User

輸入命令

ldapmodify -x -D "cn=root,dc=dlw,dc=com" -w secret -f modify

刪除,刪除目錄數據庫中的“cn=test,ou=managers,dc=dlw,dc=com”條目

ldapdelete -x -D "cn=root,dc=dlw,dc=com" -w secret "cn=test,ou=managers,dc=dlw,dc=com"

三:開始搭建

有了以上的基礎儲備之後,我們就可以開始搭建了,如果你覺得去學習以上內容太過繁瑣,可以跳過,直接開始搭建,但是當搭建過程出現問題,你將很難去排查並解決出現的問題 ,因此我建議最好學習一下再來搭建
1:安裝

yum install -y openldap openldap-clients openldap-servers migrationtools openldap-devel compat-openldap
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl enable slapd

2:配置
1)設置管理員密碼

slappasswd -s 123456
{SSHA}wfYgDRZdRyxTuwVg1bzpXjjgAWGNYeN3

2)導入管理員賬戶

[root@test-vm002 ~]# cd /etc/openldap/
[root@test-vm002 openldap]# vim chrootpw.ldif
#specify the password generated above for "olcRootPW" section
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}wfYgDRZdRyxTuwVg1bzpXjjgAWGNYeN3

[root@test-vm002 openldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"

3)導入基本Schema模式

[root@test-vm002 openldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"

[root@test-vm002 openldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"

[root@test-vm002 openldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"

4)導入基礎域名,這裏說明一下,centos6中,基礎域名是在sldap.conf中配置的,但是7中需要自己手動配置ldif文件,此文件執行後,會將基礎域名配置到/etc/openldap/slapd.d/cn=config下的olcDatabase={2}hdb.ldif當中

[root@test-vm002 openldap]# vim chdomain.ldif
#replace to your own domain name for "dc=,dc=" section
#specify the password generated above for "olcRootPW" section
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=huanqiu,dc=com" read by
none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=huanqiu,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=huanqiu,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}cm/LXtPjAlGzPWta+Yn3mKiDH53rVfMD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=huanqiu,dc=com" write by anonymous auth by self write by none
olcAccess: {1}to dn.base="" by
read
olcAccess: {2}to by dn="cn=Manager,dc=huanqiu,dc=com" write by read

[root@test-vm002 openldap]# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

Openldap服務端centos7搭建過程