CentOS 6.9下OpenLDAP 的安装与配置

前端之家收集整理的这篇文章主要介绍了CentOS 6.9下OpenLDAP 的安装与配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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
临时关闭

  1. setenforce 0

永久关闭

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

关闭iptables

  1. chkconfig iptables off
  2. /etc/init.d/iptables stop
  3. /etc/init.d/iptables status

官方文档:

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

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

二、server端安装OpenLDAP

1. yum安装OpenLDAP

  1. [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

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

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

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

4. 修改slapd.conf

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

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

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

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

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

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

6. 修改相关ldap文件权限

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

7. 启动slapd服务

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

三、OpenLDAP日志功能开启

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

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

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

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

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

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

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

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

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

5. 重启syslog服务和slapd服务

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

6. 查看openldap日志信息

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

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

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

1. 安装migrationtools 工具

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

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

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

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

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

  1. [root@openldap-server openldap]# /usr/share/migrationtools/migrate_base.pl > base.ldif
  2. [root@openldap-server openldap]# cat base.ldif
  3. dn: dc=qq,dc=com
  4. dc: qq
  5. objectClass: top
  6. objectClass: domain
  7.  
  8. dn: ou=Hosts,dc=com
  9. ou: Hosts
  10. objectClass: top
  11. objectClass: organizationalUnit
  12.  
  13. dn: ou=Rpc,dc=com
  14. ou: Rpc
  15. objectClass: top
  16. objectClass: organizationalUnit
  17.  
  18. dn: ou=Services,dc=com
  19. ou: Services
  20. objectClass: top
  21. objectClass: organizationalUnit
  22.  
  23. dn: nisMapName=netgroup.byuser,dc=com
  24. nismapname: netgroup.byuser
  25. objectClass: top
  26. objectClass: nisMap
  27.  
  28. dn: ou=Mounts,dc=com
  29. ou: Mounts
  30. objectClass: top
  31. objectClass: organizationalUnit
  32.  
  33. dn: ou=Networks,dc=com
  34. ou: Networks
  35. objectClass: top
  36. objectClass: organizationalUnit
  37.  
  38. dn: ou=People,dc=com
  39. ou: People
  40. objectClass: top
  41. objectClass: organizationalUnit
  42.  
  43. dn: ou=Group,dc=com
  44. ou: Group
  45. objectClass: top
  46. objectClass: organizationalUnit
  47.  
  48. dn: ou=Netgroup,dc=com
  49. ou: Netgroup
  50. objectClass: top
  51. objectClass: organizationalUnit
  52.  
  53. dn: ou=Protocols,dc=com
  54. ou: Protocols
  55. objectClass: top
  56. objectClass: organizationalUnit
  57.  
  58. dn: ou=Aliases,dc=com
  59. ou: Aliases
  60. objectClass: top
  61. objectClass: organizationalUnit
  62.  
  63. dn: nisMapName=netgroup.byhost,dc=com
  64. nismapname: netgroup.byhost
  65. objectClass: top
  66. objectClass: nisMap

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

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

  1. [root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./base.ldif
  2. Enter LDAP Password:
  3.  
  4. ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) '
  5.  
  6. 出现这个错误的时候,查看服务和端口都已经开启了,需要你手动指定主机名和你的端口号(ldap端口号为389),使用-h 加上主机名。
  7.  
  8. [root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./base.ldif -h openldap-server -p 389
  9.  
  10. adding new entry "dc=qq,dc=com"
  11.  
  12. adding new entry "ou=Hosts,dc=com"
  13.  
  14. adding new entry "ou=Rpc,dc=com"
  15.  
  16. adding new entry "ou=Services,dc=com"
  17.  
  18. adding new entry "nisMapName=netgroup.byuser,dc=com"
  19.  
  20. adding new entry "ou=Mounts,dc=com"
  21.  
  22. adding new entry "ou=Networks,dc=com"
  23.  
  24. adding new entry "ou=People,dc=com"
  25.  
  26. adding new entry "ou=Group,dc=com"
  27.  
  28. adding new entry "ou=Netgroup,dc=com"
  29.  
  30. adding new entry "ou=Protocols,dc=com"
  31.  
  32. adding new entry "ou=Aliases,dc=com"
  33.  
  34. adding new entry "nisMapName=netgroup.byhost,dc=com"

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

  1. [root@openldap-server openldap]# ldapsearch -x -D "cn=Manager,dc=com" -b "ou=Aliases,dc=com" -w ldappassword
  2. # extended LDIF
  3. #
  4. # LDAPv3
  5. # base <ou=Aliases,dc=com> with scope subtree
  6. # filter: (objectclass=*)
  7. # requesting: ALL
  8. #
  9.  
  10. # Aliases,qq.com
  11. dn: ou=Aliases,dc=com
  12. ou: Aliases
  13. objectClass: top
  14. objectClass: organizationalUnit
  15.  
  16. # search result
  17. search: 2
  18. result: 0 Success
  19.  
  20. # numResponses: 2
  21. # numEntries: 1

六、安装openLdap桌面服务

1. yum安装httpd及PHPLdapAdmin

  1. [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
  2. [root@openldap-server openldap]# yum install httpd PHPldapadmin -y

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

  1. [root@openldap-server openldap]# cp -a /etc/httpd/conf.d/PHPldapadmin.conf{,.bak} #可以先把此文件cp备份一份
  2. [root@openldap-server openldap]# vim /etc/httpd/conf.d/PHPldapadmin.conf
  3. Alias /PHPldapadmin /usr/share/PHPldapadmin/htdocs
  4. Alias /ldapadmin /usr/share/PHPldapadmin/htdocs
  5.  
  6. <Directory /usr/share/PHPldapadmin/htdocs>
  7. Order Deny,Allow
  8. Allow from all
  9. Allow from 127.0.0.1 #或者去掉下面这三行内容,表示运行所有客户机访问(本测试案例就去掉了这三行)
  10. Allow from ::1
  11. Allow from all #允许哪些IP地址访问PHPldapadmin,我写的全部。
  12. </Directory>

3. 修改/etc/PHPldapadmin/config.PHP配置用DN登录

  1. [root@openldap-server openldap]# cp /etc/PHPldapadmin/config.PHP{,.bak}
  2. [root@openldap-server openldap]# vim /etc/PHPldapadmin/config.PHP
  3. .......
  4. //$servers->setValue('login','attr','uid'); #注释掉这一行
  5. $servers->setValue('login','dn'); #添加这一行
  6.  
  7. [root@openldap-server openldap]# diff /etc/PHPldapadmin/config.PHP /etc/PHPldapadmin/config.PHP.bak
  8. 398,399c398,399
  9. < //$servers->setValue('login','uid');
  10. < $servers->setValue('login','dn');
  11. ---
  12. > $servers->setValue('login','uid');
  13. >

4. 启动httpd服务

  1. [root@openldap-server openldap]# chkconfig httpd on
  2. [root@openldap-server openldap]# service httpd start
  3. Starting httpd: httpd: apr_sockaddr_info_get() Failed for openldap-server
  4. httpd: Could not reliably determine the server's' fully qualified domain name,using 127.0.0.1 for ServerName
  5. [ OK ]
  6. [root@openldap-server openldap]# service httpd status
  7. httpd (pid 13010) is running...
  8. [root@openldap-server openldap]# lsof -i:80
  9. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  10. httpd 13010 root 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  11. httpd 13012 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  12. httpd 13013 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  13. httpd 13014 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  14. httpd 13015 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  15. httpd 13016 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  16. httpd 13017 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  17. httpd 13018 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
  18. httpd 13019 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)

5. 打开Web UI并登录LDAP

  1. URL: $IP/PHPldapadmin
  2. 用户名 "cn=Manager,dc=com"
  3. 密码 "ldappassword"

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

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

1. 组织

创建组织:

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

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

导入组织数据

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

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

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

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

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

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

查询刚导入数据

  1. [root@openldap-server data]# ldapsearch -x -D "cn=Manager,dc=com" -b "o=tengxun,dc=com" -w ldappassword -h openldap-server -p 389
  2. # extended LDIF
  3. #
  4. # LDAPv3
  5. # base <o=tengxun,dc=com> with scope subtree
  6. # filter: (objectclass=*)
  7. # requesting: ALL
  8. #
  9.  
  10. # tengxun,qq.com
  11. dn: o=tengxun,dc=com
  12. objectClass: top
  13. objectClass: dcObject
  14. objectClass: organization
  15. dc: qq
  16. o: tengxun
  17. description:: 572R5biF
  18. street:: 5YyX5Lqs5biC5a6J57+U5YyX6YeM55SyMTHlj7fljJfkuqzliJvkuJrlpKfljqZC5bqnN
  19. zAx5a6k
  20.  
  21. # search result
  22. search: 2
  23. result: 0 Success
  24.  
  25. # numResponses: 2
  26. # numEntries: 1

2. 管理员及组

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

  1. tengxun组织下创建一个 Manager 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People Group 两个组织单元:
  2. [root@openldap-server data]# vim admin_group.ldif
  3. # admin
  4. dn: cn=Manager,o=tengxun,dc=com
  5. objectClass: organizationalRole
  6. cn: Manager
  7.  
  8. # Group组
  9. dn: ou=Group,dc=com
  10. ou: Group
  11. objectClass: organizationalUnit
  12.  
  13. # People组
  14. dn: ou=People,dc=com
  15. ou: People
  16. objectClass: organizationalUnit

导入组数据

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

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

3. 用户

创建用户及部门(cn组)

  1. [root@openldap-server data]# vim adduser.ldif
  2. # create new
  3. # replace to your own domain name for "dc=***,dc=***" section
  4. dn: uid=huateng.ma,ou=People,dc=com
  5. objectClass: top
  6. objectclass: person
  7. #objectclass: organizationalPerson
  8. objectclass: inetOrgPerson
  9. objectClass: shadowAccount
  10. uid: huateng.ma
  11. cn: huateng.ma
  12. sn: ma
  13. displayName: 马化腾
  14. ou: People
  15. description: 可视化
  16. #userPassword: ldappassword
  17. userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
  18. mail: huateng.ma@qq.com
  19.  
  20. dn: cn=kaifa,ou=Group,dc=com
  21. objectClass: top
  22. objectClass: groupOfUniqueNames
  23. cn: kaifa
  24. uniquemember: uid=huateng.ma,dc=com

导入用户数据

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

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

添加其它用户

  1. [root@openldap-server data]# vim adduser.ldif
  2. # create new
  3. # replace to your own domain name for "dc=***,dc=***" section
  4. dn: uid=san.zhang,dc=com
  5. objectClass: top
  6. objectclass: person
  7. #objectclass: organizationalPerson
  8. objectclass: inetOrgPerson
  9. objectClass: shadowAccount
  10. uid: san.zhang
  11. cn: san.zhang
  12. sn: zhang
  13. displayName: 张三
  14. ou: People
  15. description: 可视化
  16. #userPassword: ldappassword
  17. userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
  18. mail: san.zhang@qq.com

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

  1. dn: cn=kaifa,dc=com
  2. changetype: modify
  3. add: memberuid
  4. 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

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

猜你在找的CentOS相关文章