LDAP安裝、LDAP數據遷移、LDAP卸載指南及PHPldapAdmin管理軟件安裝
第一節 LDAP安裝篇
第一步 yum安裝ldap
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
第二步 查看是否安裝成功
slapd -VV
安裝成功會顯示如下信息:
[root@localhost ~]# slapd -VV
@(#) $OpenLDAP: slapd 2.4.44 (Sep 30 2020 17:16:39) $
mockbuild@x86-02.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
第三步 設置管理員密碼
輸入如下命令設置密碼,注意需要輸入兩次, 將加密后的SSHA保存,下面配置文件中會用到
[root@localhost ~]# slappasswd
成功后會輸入如下信息:
[root@localhost openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}D7hX37v1NxCcBWeC26C8nO3VvF0GlohX
第四步 修改配置文件
1、輸入一下命令使用vim 修改配置文件, 需要修改三個地方
vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
修改信息不多,請局部復制,不要全局復制如下輸出信息。只需要修改cn dc dc的信息,另外添加一行密碼配置,其他保持不變。
修改信息如下:
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 073e2f66
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=test,dc=com #這里修改了,主要是修改dc dc的信息
olcRootDN: cn=root,dc=test,dc=com #這里修改了,主要就是修改cn dc dc的信息
olcRootPW: {SSHA}RE7si/p5dzFbzWjVR8MB1H5XOxUDvBKP #新加一行,密碼為上面生成的密碼字符串,注意空格
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 0f68f392-fe05-103a-8f4d-053fce3f128a
creatorsName: cn=config
createTimestamp: 20210208025701Z
entryCSN: 20210208025701.104594Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210208025701Z
修改完cat一下看一下文件是否修改成功了
cat /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
2、修改第二個配置文件
vim /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif
只需要修改cn dc dc的信息,其他保持不變。
修改信息如下:
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 008df9d0
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=root,dc=test,dc=com" read by * none #修改cn dc dc的信息
structuralObjectClass: olcDatabaseConfig
entryUUID: 0f68eafa-fe05-103a-8f4c-053fce3f128a
creatorsName: cn=config
createTimestamp: 20210208025701Z
entryCSN: 20210208025701.104375Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210208025701Z
修改完cat一下看一下文件是否修改成功了。
cat /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif
第五步 測試一下配置文件修改是否正確
命令行輸入如下命令:
slaptest -u
成功會輸入如下命令:
60222a02 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
60222a02 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded
前面兩行error不用管,它的意思是我們修改了這兩個文件,這一步檢查失敗請檢查配置文件。
第六步 啟動Ladp服務
systemctl start slapd
systemctl enable slapd
查看是否啟動成功
netstat -tunlp | egrep "389|636"
輸出如下:
[root@localhost openldap]# netstat -tunlp | egrep "389|636"
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 26161/slapd
tcp6 0 0 :::389 :::* LISTEN 26161/slapd
如果起不來百度無法解決的話,就參考第三章卸載篇,程序安裝LDAP吧。
第七步運行基礎的schema文件
依次執行以下文件(可以寫個腳本執行)
cd /etc/openldap/schema/
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f ppolicy.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f core.ldif
第七步如果不執行后面也不會報錯。但是遷移數據的時候肯定會出問題!!!
第八步 查看LDAP數據庫信息
輸入如下命令
ldapsearch -LLL -W -x -D "cn=root,dc=test,dc=com"
該命令要輸入我們在第三步設置的管理員密碼。"cn=root,dc=test,dc=com" 相當於我們的賬號。也可以輸出以下指定密碼命令,該命令可以不輸入密碼。
ldapsearch -LLL -w "你的密碼" -x -D "cn=root,dc=test,dc=com"
正常執行后輸出如下:
[root@localhost openldap]# ldapsearch -LLL -W -x -D "cn=root,dc=test,dc=com"
Enter LDAP Password:
No such object (32)
No such object (32)這個輸出就是正常的,因為我們沒有網LDAP里面添加過任何數據,所以查詢出來是空的。到這里為止LDAP就已經成功安裝了。
若出現以下錯誤:
[root@localhost openldap]# ldapsearch -LLL -W -x -D "cn=root,dc=test,dc=com"
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
提示信息很明顯,要么是你密碼輸錯了,要么就是你在第四步配置的密碼字符串配置錯了。檢查一下配置文件,或者從第三步重新再來。
第二篇 安裝PHPldapAdmin管理軟件
第一步 安裝Apache和PHP:
[root@localhost ~]# yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
第二步 然后安裝phpldapadmin:
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum --enablerepo=epel -y install phpldapadmin
第三步 修改配置文件
[root@localhost ~]# vim /etc/phpldapadmin/config.php
#397行取消注釋,398行添加注釋
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
[root@localhost ~]# vim /etc/httpd/conf.d/phpldapadmin.conf
// 修改配置將里面的配置文件修改成如下這些信息
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
Order Deny,Allow
Allow from all
</Directory>
第四步 修改Apache的端口
一般來說80端口會被占用,所以需要改一下端口,如果不需要的可以跳過此步驟。
vim /etc/httpd/conf/httpd.conf
將配置文件中的Listen 80
改成Listen 8081
第五步 設置開機自啟並啟動Apache:
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl start httpd
第六步 瀏覽器訪問phpldapadmin:
IP地址:8081/phpldapadmin
如果運行報錯:
Forbidden
You don't have permission to access /phpldapadmin/ on this server.
修改Apache主配置文件httpd.conf
注釋掉102-105
添加107-110
[root@cdh-server1 ~]# vi /etc/httpd/conf/httpd.conf
102 #<Directory />
103 # AllowOverride none
104 # Require all denied
105 #</Directory>
106
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
第七步 登錄phpldapadmin:
登錄的賬號是 "cn=root,dc=test,dc=com" 別傻乎乎就填的root 這是登錄不進去的。
"cn=root,dc=test,dc=com"
密碼是你設置的密碼。
第三篇 數據遷移篇
第一步 獲取數據
在原始服務器上執行以下命令
ldapsearch -LLL -W -x -D "cn=root,dc=test,dc=com" -b "dc=test,dc=com" > ldap_data_2021.ldif
以上命令是查詢 dc=test,dc=com
域下的所有信息。將這些信息重定向到ldap_data_2021.ldif
這個文件中.
使用cat 查看一下是否數據是否已經備份到ldap_data_2021.ldif
文件。如果公司有多個域,請將命令執行多次,修改命令中-b 后面的域名就行。
cat ldap_data_2021.ldif
注意: 以上命令只適合數據量小的時候,數據量在10000以內可以這么做,如果超過了請就選擇其他方法。
第二步 插入數據
將第一步生成的文件上傳到新服務器上。然后執行以下命令:
為了節約時間就用-w指定密碼,這樣子就不用輸密碼了
ldapadd -x -D "cn=root,dc=test,dc=com" -w "你的密碼" -f ldap_data_2021.ldif
輸出信息如下:
adding new entry "uid=ldapuser1,ou=People,dc=test,dc=com"
adding new entry "uid=ldapuser2,ou=People,dc=test,dc=com"
adding new entry "uid=ldapuser3,ou=People,dc=test,dc=com"
adding new entry "uid=ldapuser4,ou=People,dc=test,dc=com"
adding new entry "uid=ldapuser5,ou=People,dc=test,dc=com"
adding new entry "uid=ldapuser6,ou=People,dc=test,dc=com"
.....
插入數據常見錯誤如下:
adding new entry "dc=test,dc=com"
ldap_add: Already exists (68)
這個錯誤表示你的數據庫里面已經有了這個記錄,去ldap_data_2021.ldif吧這條數據刪了,然后繼續執行腳本。直到最后一個人插入結束。
第四篇 LDAP卸載篇
停止openldap
systemctl stop slapd
systemctl disable slapd
卸載
yum -y remove openldap-servers openldap-clients
刪除殘留文件
rm -rf /var/lib/ldap
刪除ldap用戶
userdel ldap
刪除openldap目錄
rm -rf /etc/openldap