目录


一、初始化准备

1、制定yum 源,ldap安装包全部在centos 安装ios的package目录中,因此最好的yum 源就是centos ios包,因此我们制定一个本地yum 源用走ldap安装

二、安装OpenLDAP

mount -o loop Centosxxx.iso /mnt

#vi /etc/yum.repo.d/my.repo

[rhel-yum]  

name=rhel7

baseurl=file:///mnt

enabled=1

gpgcheck=0

#yum clean all

#yum list  --enablerepo=rhel-yum

#yum install openldap-* -y --enablerepo=rhel-yum

查看openldap版本号

[root@gpfs01 yum.repos.d]# slapd -VV

@(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $

        mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/o、penldap-2.4.44/servers/slapd

安装完成后,more /etc/passwd 可以发现会自动新增的ldap用户

三、配置openLDAP服务器端

生成ldap 管理员密码

[root@gpfs01 openldap-servers]# slappasswd -s 123456

{SSHA}jYXYXesvECYi/WrE262so1Mn6ZTXrjIz

注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件

3.1.编辑olcDatabase={2}hdb.ldif文件

添加 olcRootPW:{SSHA}jYXYXesvECYi/WrE262so1Mn6ZTXrjIz

更改

olcSuffix: dc=MyLenovo,dc=com

olcRootDN: cn=Manager,dc=MyLenovo,dc=com

[root@gpfs01 cn=config]# pwd

/etc/openldap/slapd.d/cn=config

[root@gpfs01 cn=config]# ll

total 20

drwxr-x--- 2 ldap ldap  29 Feb 18 23:04 cn=schema

-rw------- 1 ldap ldap 378 Feb 18 23:04 cn=schema.ldif

-rw------- 1 ldap ldap 513 Feb 18 23:04 olcDatabase={0}config.ldif

-rw------- 1 ldap ldap 443 Feb 18 23:04 olcDatabase={-1}frontend.ldif

-rw------- 1 ldap ldap 562 Feb 18 23:04 olcDatabase={1}monitor.ldif

-rw------- 1 ldap ldap 609 Feb 18 23:04 olcDatabase={2}hdb.ldif

[root@gpfs01 cn=config]# violcDatabase={2}hdb.ldif

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

# CRC32 32810e6a

dn: olcDatabase={2}hdb

objectClass: olcDatabaseConfig

objectClass: olcHdbConfig

olcDatabase: {2}hdb

olcDbDirectory: /var/lib/ldap

olcSuffix: dc=MyLenovo,dc=com

olcRootDN: cn=Manager,dc=MyLenovo,dc=com

olcDbIndex: objectClass eq,pres

olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub

structuralObjectClass: olcHdbConfig

entryUUID: a45b7150-e718-1039-80d5-556a4ae2fb3e

creatorsName: cn=config

createTimestamp: 20200219040417Z

entryCSN: 20200219040417.019494Z#000000#000#000000

modifiersName: cn=config

modifyTimestamp: 20200219040417Z

olcRootPW:{SSHA}jYXYXesvECYi/WrE262so1Mn6ZTXrjIz

更改 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=MyLenovo,dc=com" read by * none

[root@gpfs01 cn=config]# vi olcDatabase={1}monitor.ldif

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

# CRC32 04598c32

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=MyLenovo,dc=com" read by * none

structuralObjectClass: olcDatabaseConfig

entryUUID: a45b6db8-e718-1039-80d4-556a4ae2fb3e

creatorsName: cn=config

createTimestamp: 20200219040417Z

entryCSN: 20200219040417.019402Z#000000#000#000000

modifiersName: cn=config

modifyTimestamp: 20200219040417Z

验证OpenLDAP的基本配置,使用如下命令:slaptest -u

[root@gpfs01 cn=config]# slaptest -u

5e4cd27c ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"

5e4cd27c ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"

config file testing succeeded

3.2.启动OpenLDAP服务,使用如下命令

  1. systemctlenableslapd
  2. systemctl start slapd
  3. systemctl status slapd

[root@gpfs01 cn=config]# systemctl enable slapd

Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.

[root@gpfs01 cn=config]# systemctl start slapd

[root@gpfs01 cn=config]# systemctl status slapd

â— slapd.service - OpenLDAP Server Daemon

   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)

   Active: active (running) since Wed 2020-02-1901:18:57 EST; 9s ago

     Docs: man:slapd

           man:slapd-config

           man:slapd-hdb

           man:slapd-mdb

           file:///usr/share/doc/openldap-servers/guide.html

  Process: 8824 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)

  Process: 8810 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)

 Main PID: 8827 (slapd)

   CGroup: /system.slice/slapd.service

           └─8827 /usr/sbin/slapd -u ldap -hldapi:/// ldap:///

Feb 19 01:18:57 gpfs01 systemd[1]: Starting OpenLDAP Server Daemon...

Feb 19 01:18:57 gpfs01 runuser[8813]: pam_unix(runuser:session): session opened for user ldap by (uid=0)

Feb 19 01:18:57 gpfs01 slapd[8824]: @(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $

                                            mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/o.../slapd

Feb 19 01:18:57 gpfs01 slapd[8824]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={....ldif"

Feb 19 01:18:57 gpfs01 slapd[8824]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={....ldif"

Feb 19 01:18:57 gpfs01 slapd[8824]: tlsmc_get_pin: INFO: Please note the extracted key file will not be protected wi...sions.

Feb 19 01:18:57 gpfs01 slapd[8827]: hdb_db_open:warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).

                                    Expect poor performance for suffix "dc=MyLenovo,dc=com".

Feb 19 01:18:57 gpfs01 slapd[8827]: slapd starting

Feb 19 01:18:57 gpfs01 systemd[1]: Started OpenLDAP Server Daemon.

Hint: Some lines were ellipsized, use -l to showin full

3.3.查看OpenLDAP是否打开:(默认端口389)

[root@gpfs01 cn=config]# netstat -antup|grep 389

tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      8827/slapd         

tcp6       0      0 :::389                  :::*                    LISTEN      8827/slapd

3.4.配置OpenLDAP数据库

OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置OpenLDAP数据库,使用如下命令:

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

[root@gpfs01 cn=config]# ll /var/lib/ldap/

total 320

-rw-r--r-- 1 ldap ldap     2048 Feb 19 01:18 alock

-rw------- 1 ldap ldap   262144 Feb 19 01:18 __db.001

-rw------- 1 ldap ldap    32768 Feb 19 01:18 __db.002

-rw------- 1 ldap ldap    49152 Feb 19 01:18 __db.003

-rw------- 1 ldap ldap     8192 Feb 19 01:18 dn2id.bdb

-rw------- 1 ldap ldap    32768 Feb 19 01:18 id2entry.bdb

-rw------- 1 ldap ldap 10485760 Feb 19 01:18 log.0000000001

[root@gpfs01 cn=config]# cd /root

[root@gpfs01 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

[root@gpfs01 ~]# ll /var/lib/ldap/

total 324

-rw-r--r-- 1 ldap ldap     2048 Feb 19 01:18 alock

-rw------- 1 ldap ldap   262144 Feb 19 01:18 __db.001

-rw------- 1 ldap ldap    32768 Feb 19 01:18 __db.002

-rw------- 1 ldap ldap    49152 Feb 19 01:18 __db.003

-rw-r--r-- 1 root root      845 Feb 19 01:25 DB_CONFIG

-rw------- 1 ldap ldap     8192 Feb 19 01:18 dn2id.bdb

-rw------- 1 ldap ldap    32768 Feb 19 01:18 id2entry.bdb

-rw------- 1 ldap ldap 10485760 Feb 19 01:18 log.0000000001

赋予权限 /var/lib/ldap/   目录 宿主:ldap:ldap

且权限为:chown 777 /var/lib/ldap

chown ldap:ldap -R /var/lib/ldap

chmod 777 -R /var/lib/ldap

[root@gpfs01 ~]# ll/var/lib/ldap/

total 324

-rwxrwxrwx 1 700 lda   2048 Feb 23 21:06 alock

-rwxrwxrwx 1 700 lda 262144 Feb 23 21:06 __db.001

-rwxrwxrwx 1 700 lda  32768 Feb 23 21:06 __db.002

-rwxrwxrwx 1 700 lda  49152 Feb 23 21:06 __db.003

-rwxrwxrwx 1 700 lda    845 Feb 19 01:25 DB_CONFIG

-rwxrwxrwx 1 700 lda   8192 Feb 19 01:18 dn2id.bdb

-rwxrwxrwx 1 700 lda  32768 Feb 19 01:18 id2entry.bdb

-rwxrwxrwx 1 700 ldap 10485760 Feb 23 20:58 log.0000000001

注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

3.5.导入基本Schema

导入基本Schema,使用如下命令:

[root@gpfs01 ~]# ll /etc/openldap/schema/

total 312

-r--r--r-- 1 root root  2036 Jan 29  2019 collective.ldif

-r--r--r-- 1 root root  6190 Jan 29  2019 collective.schema

-r--r--r-- 1 root root  1845 Jan 29  2019 corba.ldif

-r--r--r-- 1 root root  8063 Jan 29  2019 corba.schema

-r--r--r-- 1 root root 20612 Jan 29  2019 core.ldif

-r--r--r-- 1 root root 20499 Jan 29  2019 core.schema

-r--r--r-- 1 root root 12006 Jan 29  2019 cosine.ldif

-r--r--r-- 1 root root 73994 Jan 29  2019 cosine.schema

-r--r--r-- 1 root root  4842 Jan 29  2019 duaconf.ldif

-r--r--r-- 1 root root 10388 Jan 29  2019 duaconf.schema

-r--r--r-- 1 root root  3330 Jan 29  2019 dyngroup.ldif

-r--r--r-- 1 root root  3289 Jan 29  2019 dyngroup.schema

-r--r--r-- 1 root root  3481 Jan 29  2019 inetorgperson.ldif

-r--r--r-- 1 root root  6267 Jan 29  2019 inetorgperson.schema

-r--r--r-- 1 root root  2979 Jan 29  2019 java.ldif

-r--r--r-- 1 root root 13901 Jan 29  2019 java.schema

-r--r--r-- 1 root root  2082 Jan 29  2019 misc.ldif

-r--r--r-- 1 root root  2387 Jan 29  2019 misc.schema

-r--r--r-- 1 root root  6809 Jan 29  2019 nis.ldif

-r--r--r-- 1 root root  7640 Jan 29  2019 nis.schema

-r--r--r-- 1 root root  3308 Jan 29  2019 openldap.ldif

-r--r--r-- 1 root root  1514 Jan 29  2019 openldap.schema

-r--r--r-- 1 root root  6904 Jan 29  2019 pmi.ldif

-r--r--r-- 1 root root 20467 Jan 29  2019 pmi.schema

-r--r--r-- 1 root root  4570 Jan 29  2019 ppolicy.ldif

-r--r--r-- 1 root root 20489 Jan 29  2019 ppolicy.schema

# 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"

# 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"

# 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"

3.6.修改migrate_common.ph文件

migrate_common.ph文件主要是用于生成ldif文件使用,修改migrate_common.ph文件,如下:

vim /usr/share/migrationtools/migrate_common.ph +71

安装migrationtools工具

yum install migrationtools -y --enablerepo=rhel-yum

更改$DEFAULT_MAIL_DOMAIN = "MyLenovo.com";根据自身域名更改

$DEFAULT_BASE = "dc=MyLenovo,dc=com"; 根据自身域名更改

$EXTENDED_SCHEMA = 1; 0--->1

 vi /usr/share/migrationtools/migrate_common.ph +71

# Default DNS domain

$DEFAULT_MAIL_DOMAIN = "MyLenovo.com";

# Default base

$DEFAULT_BASE = "dc=MyLenovo,dc=com";

# Turn this on for inetLocalMailReceipient

# sendmail support; add the following to

# sendmail.mc (thanks to Petr@Kristof.CZ):

##### CUT HERE #####

#define(`confLDAP_DEFAULT_SPEC',`-h "ldap.padl.com"')dnl

#LDAPROUTE_DOMAIN_FILE(`/etc/mail/ldapdomains')dnl

#FEATURE(ldap_routing)dnl

##### CUT HERE #####

# where /etc/mail/ldapdomains contains names of ldap_routed

# domains (similiar to MASQUERADE_DOMAIN_FILE).

# $DEFAULT_MAIL_HOST = "mail.padl.com";

# turn this on to support more general object clases

# such as person.

$EXTENDED_SCHEMA = 1;

4,7和19的空行一定不能去掉

3.7通过./migrate_base.pl  生产base.ldif,并导入ldap DB

[root@gpfs01 ~]#  cd /usr/share/migrationtools/

[root@gpfs01 migrationtools]# ./migrate_base.pl > /root/base.ldif

[root@gpfs01 migrationtools]# vi /root/base.ldif

dn: dc=MyLenovo,dc=com

dc: MyLenovo

objectClass: top

objectClass: domain

objectClass: domainRelatedObject

associatedDomain: MyLenovo.com

.........

dn: ou=Services,dc=MyLenovo,dc=com

ou: Services

objectClass: top

objectClass: organizationalUnit

objectClass: domainRelatedObject

associatedDomain: MyLenovo.com

[root@gpfs01 migrationtools]# ldapadd -x -W "123456" -D "cn=Manager,dc=MyLenovo,dc=com" -f /root/base.ldif

3.8 创建ldap user的home目录 以及添加ldap user

mkdir /home/ldap/

[root@gpfs01 migrationtools]# useradd -d d1

[root@gpfs01 migrationtools]# useradd -d /home/ldap/ldapuser02 ldapuser02

[root@gpfs01 migrationtools]# echo "password" | passwd --stdin ldapuser01

Changing password for user ldapuser01.

passwd: all authentication tokens updated successfully.

[root@gpfs01 migrationtools]# echo "password" | passwd --stdin ldapuser02

Changing password for user ldapuser02.

passwd: all authentication tokens updated successfully.

把新增的ldap user 项写入单独的文件中

[root@gpfs01 migrationtools]# getent passwd |tail -n 2 > /root/users

[root@gpfs01 migrationtools]# more /root/users

ldapuser01:x:1000:1000::/home/ldap/ldapuser01:/bin/bash

ldapuser02:x:1001:1001::/home/ldap/ldapuser02:/bin/bash

[root@gpfs01 migrationtools]# getent shadow |tail -n 2 > /root/users

[root@gpfs01 migrationtools]# more /root/users

ldapuser01:$6$ZEgkrUk1$VjwwYp0FJD6W7ujTd8E41a3Y49.jb1i0atZS4/ilvT3T3Za55DETT1mK0iOnU5RFlGe8X.jSGgjmpCt4j70zY0:18316:0:99999:7

:::

ldapuser02:$6$ZtifIUYZ$Bb7Hng1nN0b9TYOmFBt5YbYr5sQZSMqb7rKL/l0F0DMarEwLjEmsddb8ML7ENkz/jX5bDQBNQMdp9d2a91y7D/:18316:0:99999:7

:::

[root@gpfs01 migrationtools]# getent group | tail -n 2 > /root/group

[root@gpfs01 migrationtools]# more /root/group

ldapuser01:x:1000:

ldapuser02:x:1001:

3.9 更改migrate_passwd.pl,把/etc/shadow 更改为/root/shadow

[root@gpfs01 migrationtools]# cd /usr/share/migrationtools

[root@gpfs01 migrationtools]#  vi migrate_passwd.pl

sub read_shadow_file

{

        open(SHADOW, "/root/shadow") || return;

        while() {

                chop;

                ($shadowUser) = split(/:/, $_);

                $shadowUsers{$shadowUser} = $_;

        }

3.10 生产可以导入ldap db的ldif文件,并导入到ldap DB中

./migrate_passwd.pl /root/users >users.ldif  生产用户的ldif

./migrate_group.pl /root/group >groups.ldif   生产组的ldif

可以编辑ldif文件 添加正确的uid和gid以及home目录(一般情况下都需要编辑)

[root@gpfs01 migrationtools]# ldapadd -x -w "123456" -D "cn=Manager,dc=MyLenovo,dc=com" -f users.ldif 添加user进入ldap db

[root@gpfs01 migrationtools]# ldapadd -x -D "cn=Manager,dc=MyLenovo,dc=com" -W -f groups.ldif 添加组进入ldap db

3.11 ldap 维护相关命令

查看ldap用户

[root@gpfs01 migrationtools]# ldapsearch -x -b "dc=MyLenovo,dc=com" -H ldap://127.0.0.1

 删除ldap user

[root@gpfs01 migrationtools]# ldapdelete -x -D "cn=Manager,dc=MyLenovo,dc=com" -W  "uid=ldapuser02,ou=people,dc=MyLenovo,dc=com"

Enter LDAP Password:

[root@gpfs01 migrationtools]# ldapdelete -x -D "cn=Manager,dc=MyLenovo,dc=com" -W  "uid=ldapuser01,ou=people,dc=MyLenovo,dc=com"

Enter LDAP Password:

   

删除ldap group

[root@gpfs01 migrationtools]# ldapdelete -x -D "cn=Manager,dc=MyLenovo,dc=com" -W  "cn=ldapuser01,ou=Group,dc=MyLenovo,dc=com"

[root@gpfs01 migrationtools]# ldapdelete -x -D "cn=Manager,dc=MyLenovo,dc=com" -W  "cn=ldapuser02,ou=Group,dc=MyLenovo,dc=com"

给用户分配密码

ldappasswd-spassword123 -W -D"cn=Manager,dc=MyLenovo,dc=com"-x"uid=ldapuser01,ou=People,dc=MyLenovo,dc=com"

启用LDAP日志记录

配置Rsyslog以将LDAP事件记录到日志文件/var/log/ldap.log。

vi/etc/rsyslog.conf

将以下行添加到/etc/rsyslog.conf文件中。

local4.* /var/log/ldap.log

重新启动rsyslog服务。

systemctlrestart rsyslog

四、ldap客户端配置

安装客户端进行测试

1、[root@gps02 ~]#  yum install -y nss-pam*

2、给client添加到服务器,将“10.111.110.247”替换为LDAP服务器的IP地址或主机名

[root@gps02 ~]# authconfig --enableldap --enableldapauth --ldapserver=10.111.110.247 --ldapbasedn="dc=MyLenovo,dc=com" --enablemkhomedir --update

3、重启LDAP客户端服务器

systemctlrestart nslcd

4、验证服务

getentpasswd | grep -i ldapuser01

5、验证LDAP,使用客户端计算机上的LDAP用户“ ldapuser01” 登录

五、安装ldap 图形portal 管理界面phpldapadmin

1、安装phpldapadmin,这会自动安装php和apache

 yum install -y phpldapadmin

2、编辑config.php

1)用#注释   $servers->setValue(‘login’,’attr’,’uid’); 不注释掉,通过管理员

cn=Manager,dc=MyLenovo,dc=com登录就提示用户名密码错误,注释掉后,管理员能够正常登录,但是建立的ldap user 就不能登录了,要希望建的ldap user能够登录,还需要取消这项注释

2)更改$servers->setValue(‘server’,’base’,array(‘dc=MyLenovo,dc=com’));   # array里加上openldap 配置DC

3)更改$servers->setValue('login','bind_id','cn=Manager,dc=MyLenovo,dc=com'); 

4)确保$servers->setValue('login','attr','dn');

vi /etc/phpldapadmin/config.php

#$servers->setValue('login','attr','uid');

$servers->setValue('server','base',array('dc=MyLenovo,dc=com'));

$servers->setValue('login','bind_id','cn=Manager,dc=MyLenovo,dc=com');

$servers->setValue('login','attr','dn');

3、编辑 /etc/httpd/conf.d/phpldapadmin.conf

添加

    # Apache 2.4

    Require local

    Require ip 10.0.0.0/8  允许那个网段的ip能够访问

 

vi /etc/httpd/conf.d/phpldapadmin.conf

    # Apache 2.4

    Require local

    Require ip 10.0.0.0/8

 

重启http service

systemctl restart httpd

通过管理员登录

cn=Manager,dc=MyLenovo,dc=com, 管理员与olcDatabase={2}hdb.ldif文件

设置的olcRootDN一致。

olcSuffix: dc=MyLenovo,dc=com

olcRootDN: cn=Manager,dc=MyLenovo,dc=com  这里登录密码为123456通过slappasswd  -s设置      

 六、通过phpldapadmin 添加ldap 用户

通过管理员用户登录

 点击创建新条目

 选择

 创建新的组,点击创建对象

 点击提交

 添加用户,点击刚才所创建的组【test

点击【创建一个子条目】

 点击【Generic: User Account】按钮。

 根据要求创建新的用户

 点击【创建对象】

点击【提交】

 如果有属性要求,点击新增的用户,点击右侧增加新的属性

 点击【Update Object】

通过普通ldap 用户登录,新建用户会报没有权限错误

注:CSDN深科文库作者为本文作者

本文二维码
最后修改:2023 年 10 月 23 日
如果觉得我的文章对你有用,请随意赞赏