LDAP 基础教程

LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议。LDAP实现提供被称为目录服务的信息服务,可以看做是一张特殊的数据库系统。可以有效的解决众多网络服务的用户账户问题,规定了统一的身份信息数据库、身份认证机制和接口,实现了资源和信息的统一管理,保证了数据的一致性和完整性。

使用场景

有两个系统A,B;需要把A系统创建的用户同步到B中,而B是个apache 开源项目,此时需要借助LDAP来解决。首先在A中建用户的同时,同步更新到LDAP中,然后B系统从LDAP中同步到自己的系统中,这样就实现了A中的用户到B系统的同步。

LDAP理解

在LDAP中,信息以树状方式组织,基本数据单元是条目,而每个条目由属性构成,属性由类型(Type)和一个或多个值(Value)组成。

Entry

包含的信息描述了现实世界中的一个真实的对象,在目录系统中可以理解为一个节点。在目录中添加一个Entry时,该Entry必须属于一个或者多个对象类(Oject Class),Entry的类型由属性Object Class规定。每个Entry都有一个唯一的DN(distinguished name)来标识Entry在directory中的位置。用Java的方式Entry相当于一个Instances,而Ojbect class自然就是Class。

根节点DN的命名有多种方法,其中之一就是域名命名法,例如sohu.com根阶节点的DN应该是DN:dc=sohu,dc=com,People节点的DN:ou=People,dc=example,dc=com,RDN是目录树中节点的相对标识,例如People节点的RDN:ou=people。

Attribute

每个Entry都是由许多Attribute组成,每个属性描述的是对象的一个特征,每个属性由一个类型和一个或多个值Value组成。
每个属性类型有所对应的语法和匹配规则;对象类和属性类型的定义均可以使用继承的概念。每个条目创建时,必须定义所属的对象类,必须提供对象类中的必选属性类型的属性值,在LDAP中一个属性类型可以对应多个值。
常见属性:

属性名 是否必填 描述
c 国家
dc domain component,常用来指一个域名的一部分
o 该条目所属的组织名(Organization Name)
ou 一个组织单元的名字
cn common name,一个对象的名字,如果指人,使用全名
sn Surname,一个人的姓
uid Userid,某个用户的登录名,与Linux系统中用户的uid不同
userPassword 登陆密码
mail 邮箱
givenName 一个人的名
displayName 显示条目时要使用的首选名称
uidNumber 账号的UID
gidNumber 账号的GID
homeDirectory 用户的家目录指定
loginShell 用户登录的SHELL
employeeNumber 工号相关信息
homePhone 家庭电话
mobile 该条目的手机号码
description 该条目的描述信息

Object class

在LDAP中,一个条目必须包含一个Oject class属性,且需要赋予至少一个值。每个值将用作一条LDAP条目进行数据存储的模板,模板中包含了一个条目必须被赋值的属性和可选的属性。
Object分为三类,结构型(Structural),如Person和orginzationUnit,辅助型(Auxiliary),如extensibeObject,抽象型(Abstract):如top,抽象型的ObjectClass不能直接使用。
下面部分常用的ObjectClass,定义在/etc/openldap/schema/core.schema文件中

名称 描述 必要属性
domain
organization o
organizationalUnit ou
person sn,cn
organizationPerson cn,sn
top 抽象型,顶级ObjectClass
posixAccount Linux用户 cn,gidNumber,homeDirectory,uid,uidNumber
posixGroup Linux用户组 cn,gidNumber
  • Entry必须仅包含一个Structural类型的OjectClass,其他两种类型可包括0或者多个。

LDAP 功能模型

描述LDAP 协议可以采用的相关操作,来访问存储在目录树中的数据,可以将操作分
成三组:
(1) 更新操作 包括添加,删除,重命名,修改Entry
(2) Interrogation Operation 用于数据的查询
(3) 认证和控制 (bind unbind abandon)

LDAP 安全模型

(1) 提供一个框架,包含目录中的信息不被非法访问,LDAP 的安全模型主要是通过身份认
证、安全通道和访问控制(ACL)来实现。
(2) LDAP 是一个面向连接的协议,在能够对LDAP 目录进行任何操作之前,LDAP 客户端
端必须获得一个到LDAP 服务端的一个连接,在这个过程中需要对LDAP 客户端的身份进
行验证(可以理解为用户绑定)。
(3) 在用户通过验证之后,为用户分配附加的权限,比如一些用户只能查看特定的Entry,而不能修改。一些用户可以查看并且修改所有的Entry等。

下面是一个典型的 LDAP 目录树结构,其中每个节点表示一个条目。在下一节中,我们将按照这个结构来配置一个简单的 LDAP 服务。

本文仅涉及没有SSL的OpenLDAP配置。

一、环境准备

两台虚拟机

IP hostname 说明
192.168.1.101 openldap-server server端
192.168.1.102 openldap-client client端

关闭SELinux

查看SELinux状态:getenforce, 或/usr/sbin/sestatus
临时关闭:

setenforce 0

永久关闭:

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config

关闭iptables

chkconfig  iptables off
/etc/init.d/iptables stop
/etc/init.d/iptables status

官方文档:

http://www.openldap.org/doc/admin24/

步骤
分为server端操作和client端操作

二、server端安装OpenLDAP

1. yum安装OpenLDAP

[root@openldap-server ~]# yum install openldap openldap-servers openldap-servers-sql openldap-clients openldap-devel compat-openldap -y

OpenLDAP的相关配置文件信息

  • /etc/openldap/slapd.conf:OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等
  • /etc/openldap/slapd.d/*:这下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成
  • /etc/openldap/schema/*:OpenLDAP的schema存放的地方
  • /var/lib/ldap/*:OpenLDAP的数据文件
  • /usr/share/openldap-servers/slapd.conf.obsolete 模板配置文件
  • /usr/share/openldap-servers/DB_CONFIG.example 模板数据库配置文件

OpenLDAP监听的端口:

  • 默认监听端口:389(明文数据传输)
  • 加密监听端口:636(密文数据传输)

2. 复制ldap配置文件到/etc

[root@openldap-server ~]# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

3. 生成ldap管理员密码(把ldappassword改为自己的管理员密码)

[root@openldap-server ~]# slappasswd -s ldappassword
{SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1

4. 修改slapd.conf

修改其中cn,dc相关内容,及rootpw密文密码,rootpw配置上面设置的密码
(rootpw必须顶格写,与密码Tab键分开)

[root@openldap-server ~]# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.bak
[root@openldap-server ~]# vim /etc/openldap/slapd.conf
......
database        bdb
suffix          "dc=qq,dc=com"
checkpoint      1024 15
rootdn          "cn=Manager,dc=qq,dc=com"             #管理LDAP中信息的最高权限,即管理员权限,登陆时用。
......
rootpw          {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1

检测/etc/openldap/slapd.conf是否有错误

[root@openldap-server ~]# slaptest -f /etc/openldap/slapd.conf
config file testing succeeded

5. 检测并重新生成ldap数据库

[root@openldap-server ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG    # 拷贝DB_CONFIG文件
[root@openldap-server ~]# cd /etc/openldap/
[root@openldap-server openldap]# ls -l slapd.d/
drwxr-x--- 3 ldap ldap 4096 7月  13 13:59 cn=config
-rw-r----- 1 ldap ldap 1281 7月  13 13:50 cn=config.ldif
[root@openldap-server openldap]# rm -rf slapd.d/*            # 删除默认配置 (否则添加ldap用户时会报错)
[root@openldap-server openldap]#官方对于OpenLDAP2.4 ,不推荐使用 slapd.conf 作为配置文件。从这个版本开始所有配置数据都保存在 /etc/openldap/slapd.d/中[root@openldap-server openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
5b02d207 bdb_db_open: database "dc=qq,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
5b02d207 backend_startup_one (type=bdb, suffix="dc=qq,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch) [root@openldap-server openldap]# slaptest -u
config file testing succeeded
出现succeed继续

6. 修改相关ldap文件权限

[root@openldap-server openldap]# chown -R ldap:ldap /var/lib/ldap/
[root@openldap-server openldap]# chown -R ldap:ldap /etc/openldap/

7. 启动slapd服务

[root@openldap-server openldap]# service slapd start
Starting slapd:                                            [  OK  ]
[root@openldap-server openldap]# service slapd status
slapd (pid  12896) is running...
[root@openldap-server openldap]# chkconfig slapd on
[root@openldap-server openldap]# lsof -i:389
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
slapd   12896 ldap    7u  IPv4 702934      0t0  TCP *:ldap (LISTEN)
slapd   12896 ldap    8u  IPv6 702935      0t0  TCP *:ldap (LISTEN)

三、OpenLDAP日志功能开启

1. slapd.conf配置文件里加上日志行

这里的日志级别有很多种,这里选择256这个值的级别(主从节点都要打开openldap日志功能)

[root@openldap-master ~]# cp /etc/openldap/slapd.conf{,.bak3}
[root@openldap-master ~]# vim /etc/openldap/slapd.conf           #中间的空格用tab键分开
.......  # 最后添加
loglevel  256

2. 修改了配置文件,所有得重新生成配置文件的信息

[root@openldap-master ~]# rm -rf /etc/openldap/slapd.d/*
[root@openldap-master ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
config file testing succeeded
[root@openldap-master ~]# slaptest -u
config file testing succeeded
[root@openldap-master ~]# chown -R ldap:ldap /var/lib/ldap/
[root@openldap-master ~]# chown -R ldap:ldap /etc/openldap/

3. 修改/etc/rsyslog.conf文件,加上下面内容

[root@openldap-master ~]# cp /etc/rsyslog.conf{,.bak}
[root@openldap-master ~]# vim /etc/rsyslog.conf
........    # 最后添加
local4.*    /var/log/slapd/slapd.log

4. 创建日志文件目录,授权

[root@openldap-master ~]# mkdir /var/log/slapd
[root@openldap-master ~]# chmod 755 /var/log/slapd/
[root@openldap-master ~]# chown ldap.ldap /var/log/slapd/

5. 重启syslog服务和slapd服务

[root@openldap-master ~]# /etc/init.d/rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ][root@openldap-master ~]# /etc/init.d/slapd restart
Stopping slapd:                                            [  OK  ]
Starting slapd:                                            [  OK  ]
[root@openldap-master ~]# lsof -i:389
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
slapd   13773 ldap    7u  IPv4 840484      0t0  TCP *:ldap (LISTEN)
slapd   13773 ldap    8u  IPv6 840485      0t0  TCP *:ldap (LISTEN)

6. 查看openldap日志信息

[root@openldap-master ~]# tail -f /var/log/slapd/slapd.log

四、server端安装migrationtools,创建根域条目(可选)

参考:http://book.51cto.com/art/201602/505737.htm

1. 安装migrationtools 工具

migrationtools 实现OpenLDAP 用户及用户组的添加。

[root@openldap-server openldap]# yum install migrationtools -y

2. 编辑/usr/share/migrationtools/migrate_common.ph并修改相关配置

[root@openldap-server openldap]# cp /usr/share/migrationtools/migrate_common.ph{,.bak}
[root@openldap-server openldap]# vim /usr/share/migrationtools/migrate_common.ph
# 搜索”dc=”,值改为与slapd.conf一致内容
......
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "qq.com";# Default base
$DEFAULT_BASE = "dc=qq,dc=com";

3. 创建OpenLDAP 根域条目,base.ldif

[root@openldap-server openldap]# /usr/share/migrationtools/migrate_base.pl > base.ldif
[root@openldap-server openldap]# cat base.ldif
dn: dc=qq,dc=com
dc: qq
objectClass: top
objectClass: domaindn: ou=Hosts,dc=qq,dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnitdn: ou=Rpc,dc=qq,dc=com
ou: Rpc
objectClass: top
objectClass: organizationalUnitdn: ou=Services,dc=qq,dc=com
ou: Services
objectClass: top
objectClass: organizationalUnitdn: nisMapName=netgroup.byuser,dc=qq,dc=com
nismapname: netgroup.byuser
objectClass: top
objectClass: nisMapdn: ou=Mounts,dc=qq,dc=com
ou: Mounts
objectClass: top
objectClass: organizationalUnitdn: ou=Networks,dc=qq,dc=com
ou: Networks
objectClass: top
objectClass: organizationalUnitdn: ou=People,dc=qq,dc=com
ou: People
objectClass: top
objectClass: organizationalUnitdn: ou=Group,dc=qq,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnitdn: ou=Netgroup,dc=qq,dc=com
ou: Netgroup
objectClass: top
objectClass: organizationalUnitdn: ou=Protocols,dc=qq,dc=com
ou: Protocols
objectClass: top
objectClass: organizationalUnitdn: ou=Aliases,dc=qq,dc=com
ou: Aliases
objectClass: top
objectClass: organizationalUnitdn: nisMapName=netgroup.byhost,dc=qq,dc=com
nismapname: netgroup.byhost
objectClass: top
objectClass: nisMap

可以编辑base.ldif 进行修改,将不需要的条目删除,然后通过ldapadd 导入至OpenLDAP目录树。

4. 添加base.ldif到ldap(输入密码为上面创建的:ldappassword)

[root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./base.ldif
Enter LDAP Password:ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)                              '出现这个错误的时候,查看服务和端口都已经开启了,需要你手动指定主机名和你的端口号(ldap端口号为389),使用-h 加上主机名。[root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./base.ldif -h openldap-server -p 389adding new entry "dc=qq,dc=com"adding new entry "ou=Hosts,dc=qq,dc=com"adding new entry "ou=Rpc,dc=qq,dc=com"adding new entry "ou=Services,dc=qq,dc=com"adding new entry "nisMapName=netgroup.byuser,dc=qq,dc=com"adding new entry "ou=Mounts,dc=qq,dc=com"adding new entry "ou=Networks,dc=qq,dc=com"adding new entry "ou=People,dc=qq,dc=com"adding new entry "ou=Group,dc=qq,dc=com"adding new entry "ou=Netgroup,dc=qq,dc=com"adding new entry "ou=Protocols,dc=qq,dc=com"adding new entry "ou=Aliases,dc=qq,dc=com"adding new entry "nisMapName=netgroup.byhost,dc=qq,dc=com"

5. 检查ldapadd是否成功(密码为上面创建的:ldappassword)(必须检查确认Manager数据添加了,才能通过phpldapAdmin登录)

[root@openldap-server openldap]# ldapsearch -x -D "cn=Manager,dc=qq,dc=com" -b "ou=Aliases,dc=qq,dc=com" -w ldappassword
# extended LDIF
#
# LDAPv3
# base <ou=Aliases,dc=qq,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## Aliases, qq.com
dn: ou=Aliases,dc=qq,dc=com
ou: Aliases
objectClass: top
objectClass: organizationalUnit# search result
search: 2
result: 0 Success# numResponses: 2
# numEntries: 1

六、安装openLdap桌面服务

1. yum安装httpd及PhpLdapAdmin

[root@openldap-server openldap]# rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@openldap-server openldap]# yum install httpd phpldapadmin -y

2. 配置/etc/httpd/conf.d/phpldapadmin.conf允许从远程访问

[root@openldap-server openldap]# cp -a /etc/httpd/conf.d/phpldapadmin.conf{,.bak}     #可以先把此文件cp备份一份
[root@openldap-server openldap]# 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 Allow from 127.0.0.1                         #或者去掉下面这三行内容,表示运行所有客户机访问(本测试案例就去掉了这三行)Allow from ::1Allow from all     #允许哪些IP地址访问phpldapadmin,我写的全部。
</Directory>

3. 修改/etc/phpldapadmin/config.php配置用DN登录

[root@openldap-server openldap]# cp /etc/phpldapadmin/config.php{,.bak}
[root@openldap-server openldap]# vim /etc/phpldapadmin/config.php
.......
//$servers->setValue('login','attr','uid');      #注释掉这一行
$servers->setValue('login','attr','dn');         #添加这一行[root@openldap-server openldap]# diff /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.bak
398,399c398,399
< //$servers->setValue('login','attr','uid');
< $servers->setValue('login','attr','dn');
---
> $servers->setValue('login','attr','uid');
>

4. 启动httpd服务

[root@openldap-server openldap]# chkconfig httpd on
[root@openldap-server openldap]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for openldap-server
httpd: Could not reliably determine the server's' fully qualified domain name, using 127.0.0.1 for ServerName[  OK  ]
[root@openldap-server openldap]# service httpd status
httpd (pid  13010) is running...
[root@openldap-server openldap]# lsof -i:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   13010   root    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13012 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13013 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13014 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13015 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13016 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13017 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13018 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)
httpd   13019 apache    4u  IPv6 757231      0t0  TCP *:http (LISTEN)

5. 打开Web UI并登录LDAP

URL:   $IP/phpldapadmin
用户名  "cn=Manager,dc=qq,dc=com"
密码   "ldappassword"

七、新建组织(公司)、管理员、组及用户

添加用户和用户组的方式有两种。一种是将系统用户通过migrationtools 工具生成LDIF 文件并结合ldapadd 命令导入OpenLDAP 目录树中,生成OpenLDAP 用户。另一种通过自定义LDIF 文件并通过OpenLDAP 命令进行添加或者修改操作。本文主要介绍第二种来完成OpenLDAP用户的添加。

1. 组织

创建组织:

[root@openldap-server data]# vim o.ldif      #在根目录下建立不同组织
dn: o=tengxun,dc=qq,dc=com
objectclass: top
objectclass: dcobject
objectclass: organization
dc: qq
o: tengxun
description: 腾讯
street: 深圳腾讯大厦

此LDIF 文件中存在中文字符,建议使用Linux dos2unix 命令进行转换,例如dos2unix -k –n filenew_file。作者建议尽可能不要使用中文字符进行添加,而使用英文添加。

导入组织数据

[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./o.ldif -h openldap-server -p 389
adding new entry "o=tengxun,dc=qq,dc=com"

============================================================
如果报错:

[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./o.ldif -h openldap-server -p 389
ldapadd: attributeDescription "dn": (possible missing newline after line 3, entry "o=tengxun,dc=qq,dc=com"?)
adding new entry "o=tengxun,dc=qq,dc=com"
ldap_add: Type or value exists (20)additional info: ou: value #0 provided more than once

产生原因:o.ldif文件中的不规范的空格所致!!即导入的数据含有空格所致!
纠错如下:

dn:(空格)o=tengxun,dc=qq,dc=com
changetype:(空格)add(结尾无空格)
objectclass:(空格)top(结尾无空格)
objectclass:(空格)organizationalUnit(结尾无空格)
ou:(空格)echnology(结尾无空格)
(1空行,空行必须要定格,不能留空格)(结尾无空格)
........(后面的配置内容纠正方法同样)

===========================================================

查询刚导入数据

[root@openldap-server data]# ldapsearch -x -D "cn=Manager,dc=qq,dc=com" -b "o=tengxun,dc=qq,dc=com" -w ldappassword -h openldap-server -p 389
# extended LDIF
#
# LDAPv3
# base <o=tengxun,dc=qq,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## tengxun, qq.com
dn: o=tengxun,dc=qq,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: qq
o: tengxun
description:: 572R5biF
street:: 5YyX5Lqs5biC5a6J57+U5YyX6YeM55SyMTHlj7fljJfkuqzliJvkuJrlpKfljqZC5bqnNzAx5a6k# search result
search: 2
result: 0 Success# numResponses: 2
# numEntries: 1

2. 管理员及组

在新建组织下创建管理员及组

在tengxun组织下创建一个 Manager 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元:
[root@openldap-server data]# vim admin_group.ldif
# admin
dn: cn=Manager,o=tengxun,dc=qq,dc=com
objectClass: organizationalRole
cn: Manager# Group组
dn: ou=Group,o=tengxun,dc=qq,dc=com
ou: Group
objectClass: organizationalUnit# People组
dn: ou=People,o=tengxun,dc=qq,dc=com
ou: People
objectClass: organizationalUnit

导入组数据

[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./admin_group.ldif  -h openldap-server -p 389
adding new entry "cn=Manager,o=tengxun,dc=qq,dc=com"adding new entry "ou=Group,o=tengxun,dc=qq,dc=com"adding new entry "ou=People,o=tengxun,dc=qq,dc=com"

通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dn: o=tengxun,dc=qq,dc=com 是该树的根节点,其下有一个管理域 cn=Manager,o=tengxun,dc=qq,dc=com 和两个组织单元 ou=People,o=tengxun,dc=qq,dc=com 及 ou=Group,o=tengxun,dc=qq,dc=com。

3. 用户

创建用户及部门(cn组)

[root@openldap-server data]# vim adduser.ldif
# create new
# replace to your own domain name for "dc=***,dc=***" section
dn: uid=huateng.ma,ou=People,o=tengxun,dc=qq,dc=com
objectClass: top
objectclass: person
#objectclass: organizationalPerson
objectclass: inetOrgPerson
objectClass: shadowAccount
uid: huateng.ma
cn: huateng.ma
sn: ma
displayName: 马化腾
ou: People
description:  可视化
#userPassword: ldappassword
userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
mail: huateng.ma@qq.comdn: cn=kaifa,ou=Group,o=tengxun,dc=qq,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: kaifa
uniquemember: uid=huateng.ma,ou=People,o=tengxun,dc=qq,dc=com

导入用户数据

[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./adduser.ldif -h openldap-server -p 389
adding new entry "uid=huateng.ma,ou=People,o=tengxun,dc=qq,dc=com"
adding new entry "cn=kaifa,ou=Group,o=tengxun,dc=qq,dc=com"

可以登陆phpLDAPadmin的web界面查询新导入的数据

添加其它用户

[root@openldap-server data]# vim adduser.ldif
# create new
# replace to your own domain name for "dc=***,dc=***" section
dn: uid=san.zhang,ou=People,o=tengxun,dc=qq,dc=com
objectClass: top
objectclass: person
#objectclass: organizationalPerson
objectclass: inetOrgPerson
objectClass: shadowAccount
uid: san.zhang
cn: san.zhang
sn: zhang
displayName: 张三
ou: People
description:  可视化
#userPassword: ldappassword
userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
mail: san.zhang@qq.com

把san.zhang用户加入到kaifa组中(没验证)

dn: cn=kaifa,ou=Group,o=tengxun,dc=qq,dc=com
changetype: modify
add: memberuid
memberuid: san.zhang
或者

通过OpenLDAP界面把san.zhang用户添加到kaifa组中

点击左侧相应组织下的"ou=Group" --> "cn=kaifa" --> "uniqueMember" --> 点击下面的赋值,复制上面一行,然后修改uid保存即可。

八、参考:

http://book.51cto.com/art/201602/505669.htm
https://www.cnblogs.com/kevingrace/p/9052669.html
https://www.cnblogs.com/AloneSword/p/4758814.html

当你发现自己的才华撑不起野心时,就请安静下来学习吧

转载于:https://blog.51cto.com/moerjinrong/2152891

CentOS 6.9下OpenLDAP 的安装与配置相关推荐

  1. CentOS 7.1下KVM的安装与配置

    由于没有物理机可用,在自己的VMware Workation中CentOS 7搭建完成. 首先查看VMware Workation是否支持虚拟化,把红框内打钩即可. 虚拟化开启并安装CentOS系统, ...

  2. 【经验】CentOS 5.2 下用Yum安装Apache+PHP+MySQL环境

    CentOS 5.2 下用Yum安装Apache+PHP+MySQL环境 Fedora 8下用Yum安装Apache+PHP+MySQL环境 fedora8 用yum来管理安装Apache+PHP+M ...

  3. CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)

    CentOS 5.4下的Memcache安装步骤分享,想要配置Linux+Nginx+PHP+Memcached运行环境的朋友可以参考下 一.源码包准备 服务器端主要是安装memcache服务器端,目 ...

  4. Centos 7下Nagios的安装及配置(完整版)

    Centos 7下Nagios的安装及配置(完整版) 简介 Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能.本文章将介绍其安装方法和详细的配置方法. nag ...

  5. CentOS 7 系统下使用 Pyenv 安装 Python 环境

    文章目录 1. CentOS 7 系统下使用 Pyenv 安装 Python 环境 1.1. Pyenv 介绍 1.2. Linux 环境下安装 Pyenv 1.3. 使用 pyenv 编译安装 Py ...

  6. Centos 6/ 7下通过yum安装php7环境

    安装php7已经是现在linux服务器必备的一款工具了,只要做网站都会考虑到使用php7了,下面我们来看Centos 6/ 7下通过yum安装php7环境的教程. 2015年12月初PHP7正式版发布 ...

  7. Linux下Nagios的安装与配置

    Linux下Nagios的安装与配置 2017-03-23 17:40:20     来源:    点击:0 Nagios是企业普遍使用的最具影响力的网络信息监视系统之一,它可以动态监视指定的网络状态 ...

  8. Centos7下Nginx的安装与配置

    Centos7下Nginx的安装与配置 一.安装 1.下载 nginx官网下载地址,下载nginx-1.20.2.tar.gz,并将其上传至centos,我这里上传到了/usr/local/src/目 ...

  9. ubuntu删除安装的mysql数据库_Ubuntu下MySQL数据库安装与配置与卸载

    安装: sudo apt-get install mysql-server mysql-client 一旦安装完成,MySQL 服务器应该自动启动.您可以在终端提示符后运行以下命令来检查 MySQL ...

最新文章

  1. 优秀的博客与文章总结链接地址
  2. 如何隐藏system函数的窗口
  3. Dubbo注解版配置
  4. WebBrowser的Cookie操作(与CookieContainer的关系)
  5. [react] 什么是浅层渲染?
  6. 分布式理论-BASE理论
  7. mysql sql dateadd_在SQL语句中DATEADD和DATEDIFF函数
  8. android pie华为更新,华为多款机型近期将迎来Android Pie系统更新,下列这几款肯定有你...
  9. openresty查看log
  10. 7.ROBOTS.TXT的SEO优化
  11. c/c++再学习:C与Python相互调用
  12. 佳能MP258mp259清零软件
  13. 2022年计算机一级考试网络安全素质教育模拟试题及答案
  14. .net 开源混淆器 ConfuserEx
  15. android菜单对话框文字,Android 对话框、信息提示和菜单
  16. 知乎推荐育儿书籍汇总
  17. Timeboxing——业界大佬都在用的时间管理法
  18. pyqt使用graphicsView显示图片
  19. C语言数据类型谜题总结
  20. 第六章 Java API

热门文章

  1. int main(int argc, char* argv[])
  2. MySQL第13天:索引优化
  3. python五十三:组合的方式完成授权
  4. 微软Skype突破!视讯人数上限来到50人
  5. 怎么将一个数组转化成字符串
  6. ASP.NET MVC开发中常见异常及解决方案
  7. 5、kafka的操作
  8. SCCM 2012 R2实战系列之三:独立主站点部署
  9. html页面头部里的meta
  10. Vue 脚手架CLI 初始化项目