前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >由浅入深剖析Openldap服务生存之南

由浅入深剖析Openldap服务生存之南

原创
作者头像
公众号: 云原生生态圈
修改2020-06-15 10:50:02
1.4K0
修改2020-06-15 10:50:02
举报
文章被收录于专栏:云原生生态圈云原生生态圈

openldap

openldap概述

ldap轻量级目录访问协议,一般简称为ldap,具有X500和LDAP两个国家标准,支持TCP/IP协议,是internet上目录服务的通用访问协议。

ldap是一种特殊的数据库系统,对于数据的读取,浏览,搜索有很好的效果,一般用来包含描述性,基于属性的信息并支持精细复杂的过滤功能恒,但是不支持通用数据库的大量更新操作所需要的复杂的事物管理或回滚策略。

ldap不支持事务性数据库所支持的高并发的吞吐量以及复杂的事物操作,一般对于一次写入数据蛮多次查询和搜索有很好的效果,Openldap面向查询进行优化,面向读取进行优化的数据库。

LDAP目录中的信息是按照树形结构进行组织的,具体是存储在条目(Entry)中,条目可以看成关系型数据库中的表记录,条目是具有区别名(Distinguished Name)的属性,DN是用来引用条目的,DN相当于关系型数据库中的主键,是唯一的,属性是有类型Type和一个或者多个值组成的,相当于关系型数据库中字段的概念。

openldap服务优点

  1. 是一个跨平台的,标准的internet互联网协议,基于X500标准,但是与X500不同
  2. 提供静态数据查询搜索,不需要类似于关系型数据的查询
  3. 基于推和拉的机制实现节点间复制(replication)以及提供基于TLS,SASL安全认证
  4. 可以基于开源的软件实现负载(keepalived)以及高可用(heartbeat,corosync)等等
  5. ldap数据元素使用简单的文本字符串
  6. 可以实现用户的集中认证管理

openldap的功能

ldap的功能模型中定义了一系列利用ldap协议的操作,主要包含:

  1. 查询操作(ldapsearch):允许查询目录和取得数据,其查询性能比关系型数据库好
  2. 更新操作(ldapupdate): 目录的更新操作没关系型数据库方便,更新性能较差,但也同样允许进行添加,删除,修改等操作
  3. 复制操作:openldap是一种典型的分布式数据库,提供复制同步,可将服务器的数据通过推或者拉的机制实现从服务器上的更新并复制到从服务器从而避免出现单点故障
  4. 认证和管理操作: 允许客户端在目录中识别自己,并且能够控制一个会话的性质

openldap的组织架构

企业多部门组织图

123123.png
123123.png

LDAP产品列表

厂商

产品

特点

IBM

IBM Directory Server

基于DB2的数据库存储,速度一般

Microsoft

Microsoft Active Directory

基于Windows系统用户,数据管理/权限不灵活

Opensource

Opensource OpenLDAP

开源项目,速度快,应用广泛

LDAP术语及管理方式

基本数据模式(schema),LDIF语法,LDAP管理

schema

  1. schema是自己内部规范,保证整个目录的完整性,保证目录树没有非法数据,如果想要定义自己的属性,就必须添加或者根据schema的规范制定schema,否则无法定义个entry
  2. schema是一个标准,定义了openldap目录树对象和属性存取方式,这也是openldap能够存储什么数据类型,数据有什么属性等均是根据scheam定义
  3. 如果想使用schema只需要在配置文件中通过include包含即可,默认的存放路径为/etc/openldap/schema

修改openldap配置文件

  1. 修改slapd.confslapdtest service slapd retsart
  2. 修改cn=config数据库的形式
    1. 理解生效
    2. 不需要重启slapd进程

objectclass

  1. 在openldap中,每个条目必须有包含一个objectclass属性并且需要赋予一个值,因此可以理解objectclass的属性值为一种模板,定义哪些信息可以存取,哪些信息不可以存储在目录树中
  2. objectclass和attribute有schema文件规定,schema文件规范objectclass构成,attribute格式以及集成关系
object分为三类
  1. 结构性(structural): person和organizationUnit
  2. 辅助型(Auxiliary): extensibleObject
  3. 抽象型(Abstract): top,抽象型的objectclass不能直接使用
属性

属性

释义

dn(distinguished Name)

唯一标识名,类似于linux文件系统的绝对路径,例如uid=ss,ou=People,dc=ss,dc=com

rdn(Relative dn)

通常指相对标识名,类似于文件系统中的相对路径,如uid=ss

uid(user id)

通常指一个用户的登录名称,如uid=ss,与系统中的uid不是一个概念

sn(surname)

通常指一个人的姓氏

givename

通常指一个人的名字,不能指姓氏

I

通常指一个地方的地名,如I:Shanghai

objectClass

objectClass是特殊的属性,包含数据存储的方式以及相关属性信息

dc(Domain Component)

通常指定一个域名,如dc=example,dc=com

ou(Organization Unit)

通常指定一个组织单元的名称ou=people,dc=example,dc=com

cn(common name)

通常指一个对象的名称,如果是人,需要使用全名

mail

通常指登录账号的邮箱地址

telephoneNumber

通常指登录账号的手机联系方式

c(Country)

通常指一个二位国家的名称,如CN

LDIF格式详解

LDIF(Ldap data interchangedFormat)的轻量级目录交换格式的简称,是存储ldap配置信息及目录内容的标准文本文件格式,之所以使用文本文件来存储这些信息是为了方便读取和修改,这也是其他大多数服务配置文件所采取的格式,通常用来交换数据并在openldap服务器之间互相交换数据,并且可以通过ldif实现数据文件的导入导出以及数据文件的增删改查等一些操作,这些信息按照ldap中的schema的规范进行操作,并会接收schema的检查,如果不符合openldap schema规范要求,则会提示相关的错误信息

ldif文件格式的特点

  1. 文件每行的结尾是不允许有空格和或者制表符存在
  2. 文件允许相关属性可以被重复赋值并使用
  3. 文件以#开头的一行为注释,可以作为注释使用
  4. 文件所有的赋值方式为属性:空格属性值
  5. 文件通过空行来定义一个条目,空格前为一个条目,空格后为一个条目

实验环境

操作系统

Centos7

服务软件版本

Openldap 2.4

初始化系统

代码语言:txt
复制
# 更新服务器时间
ntpdate -u ntp.api.bz
# 关闭selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && setenforce 0 && systemctl disable firewalld.service && systemctl stop firewalld.service
# 重启服务器
shutdown -r now

部署与安装

使用包管理器安装openldap
代码语言:txt
复制
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
检查安装的版本
代码语言:txt
复制
root:~/ # slapd -VV                                                                                                       [20:42:17]
@(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
	mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
设置openldap管理员的密码
代码语言:txt
复制
root:slapd.d/ # slappasswd -s 123456                                                                                      [20:43:35]
{SSHA}+duStt12ZYbTUbwhpEAaVMIMQH506UIt
修改管理员信息和把管理员的密码写入配置文件
代码语言:txt
复制
root:cn=config/ # cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 a830970a
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
#修改此处的域名
olcSuffix: dc=testlab,dc=com
#修改此处的管理员账号为root,以及域名为testlab
olcRootDN: cn=root,dc=testlab,dc=com
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 43a7f8d8-d134-1038-8bab-2907e6126c53
creatorsName: cn=config
createTimestamp: 20190302124137Z
entryCSN: 20190302124137.438297Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20190302124137Z
#在最后加上管理员密码信息
olcRootPW: {SSHA}+duStt12ZYbTUbwhpEAaVMIMQH506UIt
修改olcDatabase={1}monitor.ldif中的管理员信息以及域名
代码语言:txt
复制
root:cn=config/ # cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 e26d6fe9
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
#修改此处的管理员姓名和域名dc
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=root,dc=testlab,dc=com" read by * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 43a7f0ae-d134-1038-8baa-2907e6126c53
creatorsName: cn=config
createTimestamp: 20190302124137Z
entryCSN: 20190302124137.438086Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20190302124137Z
验证openldap基本配置是否有问题
代码语言:txt
复制
root:cn=config/ # slaptest -u                                                                                             [20:53:16]
5c7a7cd8 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
5c7a7cd8 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded
设置服务自启以及启动slapd服务
代码语言:txt
复制
root:cn=config/ # systemctl enable slapd                                                                                  [20:57:35]
Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.
root:cn=config/ # systemctl start slapd                                                                                   [20:57:42]
root:cn=config/ # systemctl status slapd                                                                                  [20:57:48]
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-03-02 20:57:48 CST; 8s ago
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
  Process: 2448 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
  Process: 2434 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
 Main PID: 2451 (slapd)
   CGroup: /system.slice/slapd.service
           └─2451 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///

Mar 02 20:57:46 devops-node4 systemd[1]: Starting OpenLDAP Server Daemon...
Mar 02 20:57:46 devops-node4 runuser[2437]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
Mar 02 20:57:46 devops-node4 slapd[2448]: @(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
                                                  mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/op...s/slapd
Mar 02 20:57:46 devops-node4 slapd[2448]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1...r.ldif"
Mar 02 20:57:46 devops-node4 slapd[2448]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
Mar 02 20:57:48 devops-node4 slapd[2448]: tlsmc_get_pin: INFO: Please note the extracted key file will not be protected wit...ssions.
Mar 02 20:57:48 devops-node4 slapd[2451]: hdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).
                                          Expect poor performance for suffix "dc=testlab,dc=com".
Mar 02 20:57:48 devops-node4 slapd[2451]: slapd starting
Mar 02 20:57:48 devops-node4 systemd[1]: Started OpenLDAP Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
检查openldap服务进程是否开启

端口默认是389

代码语言:txt
复制
root:cn=config/ # netstat -antup | grep 389                                                                               [20:57:56]
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      2451/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      2451/slapd          
配置openldap数据库
代码语言:txt
复制
root:cn=config/ # cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG                                [20:58:28]
root:cn=config/ # chown ldap:ldap -R /var/lib/ldap                                                                        [20:59:32]
root:cn=config/ # chmod 700 -R /var/lib/ldap                                                                              [20:59:49]
root:cn=config/ # ls -l /var/lib/ldap/                                                                                    [20:59:55]
total 324
-rwx------ 1 ldap ldap     2048 Mar  2 20:57 alock
-rwx------ 1 ldap ldap   262144 Mar  2 20:57 __db.001
-rwx------ 1 ldap ldap    32768 Mar  2 20:57 __db.002
-rwx------ 1 ldap ldap    49152 Mar  2 20:57 __db.003
-rwx------ 1 ldap ldap      845 Mar  2 20:59 DB_CONFIG
-rwx------ 1 ldap ldap     8192 Mar  2 20:57 dn2id.bdb
-rwx------ 1 ldap ldap    32768 Mar  2 20:57 id2entry.bdb
-rwx------ 1 ldap ldap 10485760 Mar  2 20:57 log.0000000001
导入openldap存储信息的格式schema
代码语言:txt
复制
root:cn=config/ # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif                                    [21:00:02]
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:cn=config/ # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif                                       [21:01:58]
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:cn=config/ # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif                             [21:02:15]
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"
修改生成ldif文件的脚本
代码语言:txt
复制
root:cn=config/ # cat /usr/share/migrationtools/migrate_common.ph | egrep 'DEFAULT_MAIL_DOMAIN|DEFAULT_BASE|EXTENDED_SCHEMA' | head -3
$DEFAULT_MAIL_DOMAIN = "testlab.com";
$DEFAULT_BASE = "dc=testlab,dc=com";
$EXTENDED_SCHEMA = 1;
添加系统用户及用户组用于后期导入openldap
代码语言:txt
复制
root:cn=config/ # groupadd ldapgroup1                                                                                                    [21:07:59]
root:cn=config/ # groupadd ldapgroup2                                                                                                    [21:08:01]
root:cn=config/ # useradd -g ldapgroup1 ldapuser1                                                                                        [21:08:03]
root:cn=config/ # useradd -g ldapgroup2 ldapuser2                                                                                        [21:08:11]
root:cn=config/ # echo "123456" | passwd --stdin ldapuser1                                                                               [21:08:16]
Changing password for user ldapuser1.
passwd: all authentication tokens updated successfully.
root:cn=config/ # echo "123456" | passwd --stdin ldapuser2                                                                               [21:08:42]
Changing password for user ldapuser2.
passwd: all authentication tokens updated successfully.
提取用户以及用户组属性
代码语言:txt
复制
root:cn=config/ # grep ":10[0-9][0-9]" /etc/passwd  | grep ldap > /root/users                                                            [21:10:42]
root:cn=config/ # grep ":10[0-9][0-9]" /etc/group | grep ldap > /root/groups                                                             [21:11:01]
生成openldap用户以及用户组属性
代码语言:txt
复制
root:cn=config/ # /usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif                                             [21:11:14]
root:cn=config/ # /usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif                                           [21:13:55]
root:cn=config/ # cat /root/groups.ldif                                                                                                  [21:14:15]
dn: uid=ldapgroup1,ou=People,dc=testlab,dc=com
uid: ldapgroup1
cn: ldapgroup1
sn: ldapgroup1
mail: ldapgroup1@testlab.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword: {crypt}x
uidNumber: 1002
gidNumber:
homeDirectory:

dn: uid=ldapgroup2,ou=People,dc=testlab,dc=com
uid: ldapgroup2
cn: ldapgroup2
sn: ldapgroup2
mail: ldapgroup2@testlab.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword: {crypt}x
uidNumber: 1003
gidNumber:
homeDirectory:

root:cn=config/ # cat /root/users.ldif                                                                                                   [21:14:17]
dn: uid=ldapuser1,ou=People,dc=testlab,dc=com
uid: ldapuser1
cn: ldapuser1
sn: ldapuser1
mail: ldapuser1@testlab.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$5PAZUtNU$CY/YcSKd1ajiCUb4u3SSNz4QIn04Og0PJosV/FDVNSCuUHWC6xETWi9DxT5UrM.ac2GM.i1PpyZ6/DmJiiQVH1
shadowLastChange: 17957
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/ldapuser1

dn: uid=ldapuser2,ou=People,dc=testlab,dc=com
uid: ldapuser2
cn: ldapuser2
sn: ldapuser2
mail: ldapuser2@testlab.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$HVzIvzSv$ovEbVz16WN2G.Dyvo3nIikHcERzVLOqg4xp0VpmjKpFoP9ZfxjrjGJfr478lw2kqYzJz2p.LmqY4kk0Cghb5b0
shadowLastChange: 17957
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1003
gidNumber: 1003
homeDirectory: /home/ldapuser2
配置openldap基础的数据库
代码语言:txt
复制
cat > /root/base.ldif << EOF
dn: dc=testlab,dc=com
o: testlab com
dc: testlab
objectClass: top
objectClass: dcObject
objectclass: organization

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

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

dn: ou=Group,dc=testlab,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
EOF
导入数据库结构到openldap
代码语言:txt
复制
root:cn=config/ # ldapadd -x -w "123456" -D "cn=root,dc=testlab,dc=com" -f /root/base.ldif                                               [21:22:12]
adding new entry "dc=testlab,dc=com"

adding new entry "cn=root,dc=testlab,dc=com"

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

adding new entry "ou=Group,dc=testlab,dc=com"
代码语言:txt
复制
root:cn=config/ # cat /root/base.ldif                                                                                                    [21:22:13]
dn: dc=testlab,dc=com
o: testlab com
dc: testlab
objectClass: top
objectClass: dcObject
objectclass: organization

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

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

dn: ou=Group,dc=testlab,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
导入用户和组信息数据到Openldap
代码语言:txt
复制
root:cn=config/ # ldapadd -x -w "123456" -D "cn=root,dc=testlab,dc=com" -f /root/users.ldif                                              [21:22:20]
adding new entry "uid=ldapuser1,ou=People,dc=testlab,dc=com"

adding new entry "uid=ldapuser2,ou=People,dc=testlab,dc=com"
root:cn=config/ # ldapadd -x -w "123456" -D "cn=root,dc=testlab,dc=com" -f /root/groups.ldif                                             [21:34:47]
adding new entry "uid=ldapgroup1,ou=People,dc=testlab,dc=com"

adding new entry "uid=ldapgroup2,ou=People,dc=testlab,dc=com"
查看数据库文件
代码语言:txt
复制
root:cn=config/ # ls -l /var/lib/ldap                                                                                                    [21:31:17]
total 488
-rwx------ 1 ldap ldap     2048 Mar  2 20:57 alock
-rw------- 1 ldap ldap     8192 Mar  2 21:22 cn.bdb
-rwx------ 1 ldap ldap   262144 Mar  2 21:24 __db.001
-rwx------ 1 ldap ldap    32768 Mar  2 21:24 __db.002
-rwx------ 1 ldap ldap    93592 Mar  2 21:24 __db.003
-rwx------ 1 ldap ldap      845 Mar  2 20:59 DB_CONFIG
-rwx------ 1 ldap ldap     8192 Mar  2 20:57 dn2id.bdb
-rwx------ 1 ldap ldap    32768 Mar  2 20:57 id2entry.bdb
-rwx------ 1 ldap ldap 10485760 Mar  2 21:24 log.0000000001
-rw------- 1 ldap ldap     8192 Mar  2 21:24 mail.bdb
-rw------- 1 ldap ldap     8192 Mar  2 21:22 objectClass.bdb
-rw------- 1 ldap ldap     8192 Mar  2 21:22 ou.bdb
-rw------- 1 ldap ldap     8192 Mar  2 21:24 sn.bdb
查看openldap信息
代码语言:txt
复制
root:cn=config/ # ldapsearch -x -b "dc=testlab,dc=com" -H "ldap://127.0.0.1"                                                             [21:38:17]
过滤查询信息
代码语言:txt
复制
root:cn=config/ # ldapsearch -LLL -x -D "cn=root,dc=testlab,dc=com" -w "123456" -b "dc=testlab,dc=com" "uid=ldapuser1"                   [21:38:50]
dn: uid=ldapuser1,ou=People,dc=testlab,dc=com
uid: ldapuser1
cn: ldapuser1
sn: ldapuser1
mail: ldapuser1@testlab.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JDVQQVpVdE5VJENZL1ljU0tkMWFqaUNVYjR1M1NTTno0UUluMDR
 PZzBQSm9zVi9GRFZOU0N1VUhXQzZ4RVRXaTlEeFQ1VXJNLmFjMkdNLmkxUHB5WjYvRG1KaWlRVkgx
shadowLastChange: 17957
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/ldapuser1
代码语言:txt
复制
root:cn=config/ # ldapsearch -LLL -x -D "cn=root,dc=testlab,dc=com" -w "123456" -b "dc=testlab,dc=com" "uid=ldapgroup1"                  [21:41:07]
dn: uid=ldapgroup1,ou=People,dc=testlab,dc=com
uid: ldapgroup1
cn: ldapgroup1
sn: ldapgroup1
mail: ldapgroup1@testlab.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword:: e2NyeXB0fXg=
uidNumber: 1002
gidNumber: 1002
homeDirectory:
关联openldap中的用户和组关系
代码语言:txt
复制
cat > add_user_to_groups.ldif << "EOF"
dn: cn=ldapgroup1,ou=Group,dc=testlab,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
EOF
开启openldap日志访问功能
代码语言:txt
复制
cat > /root/loglevel.ldif << "EOF"
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
EOF

cat >> /etc/rsyslog.conf << "EOF"
local4.* /var/log/slapd.log
EOF
重启rsyslog和slapd服务
代码语言:txt
复制
systemctl restart rsyslog
systemctl restart slapd
tail -f /var/log/slapd.log
修改默认openldap运行端口
代码语言:txt
复制
vim /etc/sysconfig/slapd
SLAPD_URLS=”ldapi://0.0.0.0:4567/ ldap://0.0.0.0:4567/”
查询openldap信息
代码语言:txt
复制
ldapsearch -LLL -x -D 'cn=root,dc=testlab,dc=com' -w "123456" -H ldap://0.0.0.0:4567/ -b 'dc=testlab,dc=com'
 'uid=ldapuser1'

千难万难吧openldap服务给运行起来了,但这只是第一步,剩下研究一下openldap的主从架构,主主架构,以及openldap的具体使用场景。

扫码关注我们吧!《云原生生态圈》
扫码关注我们吧!《云原生生态圈》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • openldap
    • openldap概述
      • openldap服务优点
        • openldap的功能
          • openldap的组织架构
            • 企业多部门组织图
          • LDAP产品列表
            • LDAP术语及管理方式
              • schema
              • 修改openldap配置文件
              • objectclass
            • LDIF格式详解
              • ldif文件格式的特点
              • 实验环境
              • 初始化系统
              • 部署与安装
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档