LDAP簡介,基本模型,安裝LDAP,安裝和配置LDAP管理工具PHPldapadmin

目錄

  1. OpenLDAP
    1.1. OpenLDAP簡介
    1.2. LDAP的基本模型
    1.2.1. 目錄樹概念
    1.2.2. DC、UID、OU、CN、SN、DN、RDN
    1.2.3. 基本模型
    1.3. LDAP的使用
    1.4. 相關網址
    1.5. 安裝OpenLDAP
    1.5.1. 系統環境信息
    1.5.2. 基礎的環境準備
    1.5.3. OpenLDAP服務器的搭建
    1.5.4. 安裝和配置LDAP管理工具PHPldapadmin

1.OpenLDAP

1.1.OpenLDAP簡介

LDAP是一款輕量級目錄訪問協議(Lightweight Directory Access Protocol,簡稱LDAP),屬於開源集中賬號管理架構的實現,且支持衆多系統版本,被廣大互聯網公司所採用。

LDAP提供並實現目錄服務的信息服務,目錄服務是一種特殊的數據庫系統,對於數據的讀取、瀏覽、搜索有很好的效果。目錄服務一般用來包含基於屬性的描述性信息並支持精細複雜的過濾功能,但OpenLDAP目錄服務不支持通用數據庫的大量更新操作所需要的複雜的事務管理或回滾策略等。

LDAP具有兩個標準,分別是X.500和LDAP。OpenLDAP是基於X.500標準的,而且去除了X.500複雜的功能並且可以根據自我需求定製額外擴展功能,但與X.500也有不同之處,例如OpenLDAP支持TCP/IP協議等,目前TCP/IP是Internet上訪問互聯網的協議。

OpenLDAP 可以直接運行在更簡單和更通用的TCP/IP或其他可靠的傳輸協議層上,避免了在OSI會話層和表示層的開銷,使連接的建立和包的處理更簡單、更快,對於互聯網和企業網應用更理想。

OpenLDAP目錄中的信息是以樹狀的層次結構來存儲數據(這很類同於DNS),最頂層即根部稱作**“基準DN”,形如“dc=mydomain,dc=org”或者“o=mydomain.org”,前一種方式更爲靈活也是Windows AD中使用的方式。在根目錄的下面有很多的文件和目錄,爲了把這些大量的數據從邏輯上分開,OpenLDAP像其它的目錄服務協議一樣使用OU**(Organization Unit,組織單元),可以用來表示公司內部機構,如部門等,也可以用來表示設備、人員等。同時OU還可以有子OU,用來表示更爲細緻的分類。

OpenLDAP中每一條記錄都有一個唯一的區別於其它記錄的名字DN(Distinguished Name),其處在“葉子”位置的部分稱作RDN(用戶條目的相對標識名)。如dn:cn=tom,ou=animals,dc=ilanni,dc=comcn即爲RDN,而RDN在一個OU中必須是唯一的。

OpenLDAP默認以Berkeley DB作爲後端數據庫,BerkeleyDB數據庫主要以散列的數據類型進行數據存儲,如以鍵值對的方式進行存儲。

BerkeleyDB是一類特殊的面向查詢進行優化、面向讀取進行優化的數據庫,主要用於搜索、瀏覽、更新查詢操作,一般對於一次寫入數據、多次查詢和搜索有很好的效果。BerkeleyDB不支持事務型數據庫(MySQL、MariDB、Oracle等)所支持的高併發的吞吐量以及複雜的事務操作。

1.2.LDAP的基本模型

每一個系統、協議都會有屬於自己的模型,LDAP也不例外,在瞭解LDAP的基本模型之前我們需要先了解幾個LDAP的目錄樹的概念:

1.2.1.目錄樹概念

1、目錄樹:在一個目錄服務系統中,整個目錄信息集可以表示爲一個目錄信息樹,樹中的每個節點是一個條目。
2、條目:每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)。
3、對象類:與某個實體類型對應的一組屬性,對象類是可以繼承的,這樣父類的必須屬性也會被繼承下來。
4、屬性:描述條目的某個方面的信息,一個屬性由一個屬性類型和一個或多個屬性值組成,屬性有必須屬性和非必須屬性。

1.2.2.DC、UID、OU、CN、SN、DN、RDN

關鍵字 英文全稱 含義
dc Domain Component 域名的部分,其格式是將完整的域名分成幾部分,如域名爲example.com變成dc=example,dc=com(一條記錄的所屬位置)
uid User Id 用戶Id zuoquantu (一條記錄的ID)
ou Organization Unit 組織單位,組織單位可以包含在其他各種對象(包括其他組織單位),如”oa組” (一條記錄的所屬組)
cn Common Name 公共名稱,如“Thomas Johansson”(一條記錄的名稱)
sn Surname 姓,如”許”
dn Distinguished Name “uid=songtao.xu,ou=oa組,dc=example,dc=com”,一條記錄的位置(唯一)
rdn Relative dn 相對辨別名,類似於文件系統中的相對路徑,它是與目錄樹結構無關的部分,如“uid=tom”或“cn= Thomas Johansson”

1.2.3.基本模型

1.2.3.1.信息模型

在LDAP中信息以樹狀方式組織,在樹狀信息中的,基本數據單元是條目,而每個條目由屬性構成,屬性中存儲有屬性值
在這裏插入圖片描述

1.2.3.2.命名模型

LDAP中的命名模型,也即LDAP中的條目定位方式。在LDAP中每個條目均有自己的DN。DN是該條目在整個樹中的唯一名稱標識,如同文件系統中,帶路徑的文件名就是DN。

1.2.3.3.功能模型

在LDAP中共有四類10中操作:查詢類操作,如搜索、比較;更新類操作,如添加條目、刪除條目、修改條目名;認證類操作,如綁定、解綁定;其它操作,如放棄和擴展操作。除了擴展操作,另外9種是LDAP的標準操作;擴展操作是LDAP中爲了增加新的功能,提供的一種標準的擴展框架,當前已經成爲了LDAP標準的擴展操作,有修改密碼和StartTLS擴展,在新的RFC標準和草案中增加一些新的擴展操作,不同LDAP廠商也均定義了自己的擴展操作。

1.2.3.4.安全模型

LDAP中的安全模型主要通過身份認證、安全通道和訪問控制來實現。

1.3.LDAP的使用

那我們是如何訪問LDAP的數據庫服務器呢?
在這裏插入圖片描述

統一身份認證主要是改變原有的認證策略,使需要認證的軟件都通過LDAP進行認證,在統一身份認證之後,用戶的所有信息都存儲在AD Server中。終端用戶在需要使用公司內部服務的時候,都需要通過AD服務器的認證。
那麼程序中是如何訪問的呢? 我們以PHP腳本作爲例子:

$ldapconn = ldap_connect(10.1.8.78")
$ldapbind = ldap_bind($ldapconn, 'username', $ldappass);
$searchRows= ldap_search($ldapconn, $basedn, "(cn=*)");
$searchResult = ldap_get_entries($ldapconn, $searchRows);
ldap_close($ldapconn);

1、連接到LDAP服務器
2、綁定到LDAP服務器
3、在LDAP服務器上執行所需的任何操作
4、釋放LDAP服務器的連接

1.4.相關網址

官網首頁:https://www.openldap.org/

下載地址:https://www.openldap.org/software/download/

1.5.安裝OpenLDAP

1.5.1.系統環境信息

[root@hadoop1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

1.5.2.基礎的環境準備

關閉防火牆:/etc/init.d/iptables stop && chkconfig iptables off
關閉NetworkManager:/etc/init.d/NetworkManager stop && chkconfig NetworkManager off
SeLinux設爲disabled:getenforce 是否爲Disabled,若不是,則修改:
1:臨時的生效 setenforce 0,再getenforce的時候爲permissive
2:修改配置文件,然後重啓 vim /etc/sysconfig/selinux 把SELINUX=disabled

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && setenforce 0&& systemctl disable firewalld.service && systemctl stop firewalld.service

1.5.3.OpenLDAP服務器的搭建

1.5.3.1.安裝OpenLDAP的相關

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools openldap-servers-sql

其中compat-openldap這個包與主從有很大的關係
在這裏插入圖片描述

安裝包說明:

安裝包名稱 說明
openldap openldap服務端和客戶端必須用的庫文件。
openldap-servers 用於啓動服務器和設置。包含單獨的ldap後臺守護程序。
openldap-client 用於啓動服務和設置. 包含單獨的ldap後臺守護程序。
openldap-devel devel包,可選擇進行安裝。
openldap-servers-sql 支持sql模塊,可進行選擇性安裝。
migrationtools 通過migrationtools實現OpenLDAP用戶及用戶組的添加,導入系統賬戶,可進行選擇性安裝。
compat-openldap openldap兼容性庫

安裝完後,可以看到自動創建了ldap用戶:

[root@hadoop1 ~]# tail -n 2 /etc/passwd
ldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin
saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@hadoop1 ~]#

可以通過rpm -qa |grep openldap查看安裝了哪些包:

[root@hadoop1 ~]# rpm -qa | grep openldap
openldap-clients-2.4.44-21.el7_6.x86_64
openldap-servers-2.4.44-21.el7_6.x86_64
openldap-devel-2.4.44-21.el7_6.x86_64
compat-openldap-2.3.43-5.el7.x86_64
openldap-servers-sql-2.4.44-21.el7_6.x86_64
openldap-2.4.44-21.el7_6.x86_64
[root@hadoop1 ~]#

查看OpenLDAP版本,使用如下命令:

[root@hadoop1 openldap]# slapd -VV
@(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
	[email protected]:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd

[root@hadoop1 openldap]#

1.5.3.2.OpenLDAP的相關配置文件信息

/etc/openldap : OpenLDAP配置文件和目錄所在位置
在這裏插入圖片描述
/etc/openldap/slapd.conf :OpenLDAP的主配置文件,記錄根域信息,管理員名稱,密碼,日誌,權限等

/etc/openldap/slapd.d : 這下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,這裏的東西就要重新生成, OpenLDAP2.4.23版本開始所有配置數據都保存在/etc/openldap/slapd.d/,很多博客都是使用slapd.conf作爲配置文件。
在這裏插入圖片描述
/etc/openldap/schema/* : OpenLDAP的schema存放的地方
在這裏插入圖片描述

/var/lib/ldap/* : OpenLDAP的數據文件

/usr/share/openldap-servers/DB_CONFIG.example 模板數據庫配置文件

OpenLDAP監聽的端口:
默認監聽端口:389(明文數據傳輸)
加密監聽端口:636(密文數據傳輸)

1.5.3.3.配置OpenLDAP的管理員密碼

這裏明文密碼設置成hadoop

[root@hadoop1 ~]# slappasswd -s hadoop
{SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu
[root@hadoop1 ~]#

1.5.3.4.修改olcDatabase={2}hdb.ldif文件

vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif

末尾添加一行:
olcRootPW: {SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu    (注意,這裏是上面的密碼,它上面不要有空行)

修改:
olcSuffix: dc=zuoquantu,dc=com
olcRootDN: cn=Manager,dc=zuoquantu,dc=com

完整文件:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 6f27a82a
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=zuoquantu,dc=com
olcRootDN: cn=Manager,dc=zuoquantu,dc=com
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 667c30cc-25e8-103a-83dd-c7513b40ba38
creatorsName: cn=config
createTimestamp: 20200509022740Z
entryCSN: 20200509022740.627338Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20200509022740Z
olcRootPW: {SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu

1.5.3.5.修改olcDatabase={1}monitor.ldif文件

vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
修改如下:

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=zuoquantu,dc=com" read by * none

完整如下:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 45a2833d
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=zuoquantu,dc=com" read by * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 667c2992-25e8-103a-83dc-c7513b40ba38
creatorsName: cn=config
createTimestamp: 20200509022740Z
entryCSN: 20200509022740.627153Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20200509022740Z

1.5.3.6.驗證配置文件是否正確

[root@hadoop1 ~]# slaptest -u
5eb650aa ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
5eb650aa ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded
[root@hadoop1 ~]#

1.5.3.7.啓動服務&&查看服務

[root@hadoop1 ~]# systemctl enable slapd
[root@hadoop1 ~]# systemctl start slapd
[root@hadoop1 ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2020-05-09 14:44:50 CST; 7s ago
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
  Process: 1931 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1915 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
 Main PID: 1933 (slapd)
   CGroup: /system.slice/slapd.service
           └─1933 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///

5月 09 14:44:50 hadoop1 systemd[1]: Starting OpenLDAP Server Daemon...
5月 09 14:44:50 hadoop1 runuser[1918]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
5月 09 14:44:50 hadoop1 slapd[1931]: @(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
                                              [email protected]:/builddir/build/BUILD/openl...slapd
5月 09 14:44:50 hadoop1 slapd[1931]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/o...ldif"
5月 09 14:44:50 hadoop1 slapd[1931]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/o...ldif"
5月 09 14:44:50 hadoop1 slapd[1931]: tlsmc_get_pin: INFO: Please note the extracted key file will not be ...ions.
5月 09 14:44:50 hadoop1 slapd[1933]: hdb_db_open: warning - no DB_CONFIG file found in directory /var/lib... (2).
                                      Expect poor performance for suffix "dc=zuoquantu,dc=com".
5月 09 14:44:50 hadoop1 slapd[1933]: slapd starting
5月 09 14:44:50 hadoop1 systemd[1]: Started OpenLDAP Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@hadoop1 ~]#

1.5.3.8.查看監聽端口389

[root@hadoop1 ~]# netstat -anpl | grep 389
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      1933/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      1933/slapd          
[root@hadoop1 ~]#

1.5.3.9.配置OpenLDAP數據庫

[root@hadoop1 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@hadoop1 ~]# chown ldap:ldap -R /var/lib/ldap/
[root@hadoop1 ~]# chmod 700 -R /var/lib/ldap/
[root@hadoop1 ~]# ll /var/lib/ldap/

總用量 376
-rwx------ 1 ldap ldap     2048 5月   9 14:44 alock
-rwx------ 1 ldap ldap   303104 5月   9 14:44 __db.001
-rwx------ 1 ldap ldap    40960 5月   9 14:44 __db.002
-rwx------ 1 ldap ldap    49152 5月   9 14:44 __db.003
-rwx------ 1 ldap ldap      845 5月   9 14:50 DB_CONFIG
-rwx------ 1 ldap ldap     8192 5月   9 14:44 dn2id.bdb
-rwx------ 1 ldap ldap    32768 5月   9 14:44 id2entry.bdb
-rwx------ 1 ldap ldap 10485760 5月   9 14:44 log.0000000001
[root@hadoop1 ~]#

注意:/var/lib/ldap/就是BerkeleyDB數據庫默認存儲的路徑。

1.5.3.10.導入基本Schema

[root@hadoop1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@hadoop1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
[root@hadoop1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

輸出:
在這裏插入圖片描述

1.5.3.11.修改migrate_common.ph文件

[root@hadoop1 ~]# vi /usr/share/migrationtools/migrate_common.ph

修改如下變量:

$DEFAULT_MAIL_DOMAIN = "zuoquantu.com";
$DEFAULT_BASE = "dc=zuoquantu,dc=com";
$EXTENDED_SCHEMA = 1;

1.5.3.12.添加用戶組及用戶組

默認情況下OpenLDAP是沒有普通用戶的,但是有一個管理員用戶。管理用戶就是前面我們剛剛配置的root。
現在我們把系統中的用戶,添加到OpenLDAP中。爲了進行區分,我們現在新加兩個用戶ldapuser1和ldapuser2,和兩個用戶組ldapgroup1和ldapgroup2,如下:
添加用戶組,使用如下命令:

[root@hadoop1 ~]# groupadd ldapgroup1
[root@hadoop1 ~]# groupadd ldapgroup2

1.5.3.13.添加用戶並設置密碼,使用如下命令

[root@hadoop1 ~]# useradd -g ldapgroup1 ldapuser1
[root@hadoop1 ~]# useradd -g ldapgroup1 ldapuser1
useradd:用戶“ldapuser1”已存在
[root@hadoop1 ~]# useradd -g ldapgroup2 ldapuser2
[root@hadoop1 ~]# passwd  ldapuser1

更改用戶 ldapuser1 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@hadoop1 ~]# passwd ldapuser2
更改用戶 ldapuser2 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@hadoop1 ~]#

密碼都設置爲:hadoop

1.5.3.14.提取用戶和組

[root@hadoop1 ~]# grep ":10[0-9][0-9]" /etc/passwd > /root/users
[root@hadoop1 ~]# grep ":10[0-9][0-9]" /etc/group > /root/groups

結果:

[root@hadoop1 ~]# cat users 
ldapuser1:x:1001:1001::/home/ldapuser1:/bin/bash
ldapuser2:x:1002:1002::/home/ldapuser2:/bin/bash

[root@hadoop1 ~]# cat groups 
ldapgroup1:x:1001:
ldapgroup2:x:1002:

1.5.3.15.生成用戶和組的ldif文件

[root@hadoop1 ~]# /usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
[root@hadoop1 ~]# /usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
[root@hadoop1 ~]# cat /root/users.ldif 
[root@hadoop1 ~]# cat groups.ldif

cat /root/users.ldif的輸出如下:

[root@hadoop1 ~]# cat /root/users.ldif 
dn: uid=ldapuser1,ou=People,dc=zuoquantu,dc=com
uid: ldapuser1
cn: ldapuser1
sn: ldapuser1
mail: [email protected]
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$hE6ZwUIO$/KDZEpoOZEPW5JkaFceOf7Xd4F/YuM5pI3413v4UmZQ3DKRrEA3YtyhndZirAlZ0EjdXXe2Vr61tBidjuRJ.K0
shadowLastChange: 18391
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/ldapuser1

dn: uid=ldapuser2,ou=People,dc=zuoquantu,dc=com
uid: ldapuser2
cn: ldapuser2
sn: ldapuser2
mail: [email protected]
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$kRrZQi/u$iopzFYOu9CNLZGLrdHRp.e4qw2ifAL/rm6qeGSm/BNf2vmoDyK9SxJC.DZ.RmL7Kiikw4c7jKImpSgQCuVnKN1
shadowLastChange: 18391
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/ldapuser2

[root@hadoop1 ~]#
[root@hadoop1 ~]# cat /root/groups.ldif 
dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup1
userPassword: {crypt}x
gidNumber: 1001

dn: cn=ldapgroup2,ou=Group,dc=zuoquantu,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup2
userPassword: {crypt}x
gidNumber: 1002

[root@hadoop1 ~]#

1.5.3.16.導入用戶及用戶組到OpenLDAP數據庫

配置openldap基礎的數據庫,如下(注意空行):

cat > /root/base.ldif << EOF
dn: dc=zuoquantu,dc=com
o: zuoquantu com
dc: zuoquantu
objectClass: top
objectClass: dcObject
objectclass: organization

dn: cn=Manager,dc=zuoquantu,dc=com
cn: Manager
objectClass: organizationalRole
description: Directory Manager

dn: ou=People,dc=zuoquantu,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=zuoquantu,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
EOF

最終的結果如下:
在這裏插入圖片描述

導入基礎數據庫,使用如下命令:

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/base.ldif
adding new entry "dc=zuoquantu,dc=com"

adding new entry "cn=Manager,dc=zuoquantu,dc=com"

adding new entry "ou=People,dc=zuoquantu,dc=com"

adding new entry "ou=Group,dc=zuoquantu,dc=com"

[root@hadoop1 ~]#

導入用戶:

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/users.ldif
adding new entry "uid=ldapuser1,ou=People,dc=zuoquantu,dc=com"

adding new entry "uid=ldapuser2,ou=People,dc=zuoquantu,dc=com"

[root@hadoop1 ~]#

導入用戶組:

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/groups.ldif
adding new entry "cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com"

adding new entry "cn=ldapgroup2,ou=Group,dc=zuoquantu,dc=com"

[root@hadoop1 ~]#

1.5.3.17.把OpenLDAP用戶加入到用戶組

儘管我們已經把用戶和用戶組信息,導入到OpenLDAP數據庫中了。但實際上目前OpenLDAP用戶和用戶組之間是沒有任何關聯的。
如果我們要把OpenLDAP數據庫中的用戶和用戶組關聯起來的話,我們還需要做另外單獨的配置。
現在我們要把ldapuser1用戶加入到ldapgroup1用戶組,需要新建添加用戶到用戶組的ldif文件,如下

[root@hadoop1 ~]# cat > add_user_to_groups.ldif << "EOF"
> dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
> changetype: modify
> add: memberuid
> memberuid: ldapuser1
> EOF
[root@hadoop1 ~]# 
[root@hadoop1 ~]# cat add_user_to_groups.ldif 
dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
[root@hadoop1 ~]#

導入ldif

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/add_user_to_groups.ldif
modifying entry "cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com"

[root@hadoop1 ~]# 

查詢用戶

[root@hadoop1 ~]# ldapsearch -LLL -x -D 'cn=Manager,dc=zuoquantu,dc=com' -w "hadoop" -b 'dc=zuoquantu,dc=com' 'cn=ldapgroup1'
dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup1
userPassword:: e2NyeXB0fXg=
gidNumber: 1001
memberUid: ldapuser1

[root@hadoop1 ~]#

1.5.3.18.開啓OpenLDAP日誌訪問功能

默認情況下OpenLDAP是沒有啓用日誌記錄功能的,但是在實際使用過程中,我們爲了定位問題需要使用到OpenLDAP日誌。
新建日誌配置ldif文件,如下

[root@hadoop1 ~]# cat > /root/loglevel.ldif << "EOF"
> dn: cn=config
> changetype: modify
> replace: olcLogLevel
> olcLogLevel: stats
> EOF
[root@hadoop1 ~]#

導入到OpenLDAP中,並重啓OpenLDAP服務,如下:

[root@hadoop1 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@hadoop1 ~]# systemctl restart rsyslog

1.5.4.安裝和配置LDAP管理工具PHPldapadmin

[root@hadoop1 ~]# yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
[root@hadoop1 ~]# yum -y install epel-release
[root@hadoop1 ~]# yum --enablerepo=epel -y install phpldapadmin

ln -s /usr/share/phpldapadmin /var/www
cd /var/www/phpldapadmin/config
cp config.php config_backup.php 

1.5.4.1.修改配置文件

[root@hadoop1 ~]# vim /etc/phpldapadmin/config.php +397
#397行取消註釋,398行添加註釋
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

//添加一行:
$servers->setValue('server','host','192.168.106.158');

[root@hadoop1 ~]# vim /etc/httpd/conf.d/phpldapadmin.conf
修改爲如下內容:
#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
    # 添加一行內容,指定訪問的ip端
    #Require 192.168.106.158
    Require all granted
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Allow from all
    #Deny from all
    #Allow from 127.0.0.1
    #Allow from ::1
  </IfModule>
</Directory>

在這裏插入圖片描述
設置開機自動並啓動Apache:

[root@hadoop1 ~]# systemctl enable httpd
[root@hadoop1 ~]# systemctl start httpd
[root@hadoop1 ~]# systemctl restart httpd

登錄web控制檯:http://192.168.106.158/phpldapadmin/

用戶名:cn=Manager,dc=zuoquantu,dc=com
密碼:hadoop
在這裏插入圖片描述
在這裏插入圖片描述

參考文章:

https://blog.csdn.net/woloqun/article/details/89216120?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4

https://www.cnblogs.com/lemon-le/p/6266921.html

https://blog.csdn.net/dengchenrong/article/details/88389947

https://blog.csdn.net/dockj/article/details/82392263?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

https://blog.csdn.net/belialxing/article/details/89183051

打個賞唄,您的支持是我堅持寫好博文的動力。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章