LDAP简介

  LDAP 代表 轻量级目录访问协议。在我的理解中ldap就是一个数据库。

  在LDAP中,目录条目以分层树状结构排序。

  传统上,这种结构反映了地理和组织边界,表示国家/地区的条目显示在树的顶部。下面是代表各州和国家组织的条目。它们下面可能是表示组织单位,人员,打印机,文档或您可以想到的任何其他内容的条目。图1.1显示了使用传统命令的实例LDAP目录树。

  

  而现在一般使用基于域名来显示,因为它允许使用DNS定位目录服务。图1.2显示了使用基于域的命名的LDAP目录树示例。

LDAP使用场景

  我暂时只用到了统一身份验证。

安装OPEN-LDAP

yum安装(首先需要epel源)

  1. yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

目录结构

  1. [root@zabbix1 openldap]# pwd
  2. /etc/openldap
  3. [root@zabbix1 openldap]# tree
  4. .
  5. ├── certs
  6.    ├── cert8.db
  7.    ├── key3.db
  8.    ├── password
  9.    └── secmod.db
  10. ├── check_password.conf
  11. ├── ldap.conf
  12. ├── schema
  13.    ├── collective.ldif
  14.    ├── collective.schema
  15.    ├── corba.ldif
  16.    ├── corba.schema
  17.    ├── core.ldif
  18.    ├── core.schema
  19.    ├── cosine.ldif
  20.    ├── cosine.schema
  21.    ├── duaconf.ldif
  22.    ├── duaconf.schema
  23.    ├── dyngroup.ldif
  24.    ├── dyngroup.schema
  25.    ├── inetorgperson.ldif
  26.    ├── inetorgperson.schema
  27.    ├── java.ldif
  28.    ├── java.schema
  29.    ├── misc.ldif
  30.    ├── misc.schema
  31.    ├── nis.ldif
  32.    ├── nis.schema
  33.    ├── openldap.ldif
  34.    ├── openldap.schema
  35.    ├── pmi.ldif
  36.    ├── pmi.schema
  37.    ├── ppolicy.ldif
  38.    └── ppolicy.schema
  39. └── slapd.d
  40. ├── cn=config
  41.    ├── cn=schema
  42.       ├── cn={}core.ldif
  43.       ├── cn={}cosine.ldif
  44.       ├── cn={}nis.ldif
  45.       └── cn={}inetorgperson.ldif
  46.    ├── cn=schema.ldif
  47.    ├── olcDatabase={}config.ldif
  48.    ├── olcDatabase={-}frontend.ldif
  49.    ├── olcDatabase={}monitor.ldif
  50.    └── olcDatabase={}hdb.ldif
  51. └── cn=config.ldif
  52.  
  53. directories, files
  /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/DB_CONFIG.example 模板数据库配置文件
  /usr/share/openldap-servers/slapd.ldif 模板配置文件
  OpenLDAP监听的端口:
  默认监听端口:389(明文数据传输)
  加密监听端口:636(密文数据传输)

初始化OpenLDAP的配置

修改CN,DC,DC,添加

  1. olcRootPW 管理员密码 可以明文 可以密文 slappasswd生成密文密码
  1. [root@zabbix1 openldap-servers]# cd /usr/share/openldap-servers

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

  1. [root@zabbix1 openldap-servers]# cat slapd.ldif
  2. #
  3. # See slapd-config() for details on configuration options.
  4. # This file should NOT be world readable.
  5. #
  6.  
  7. dn: cn=config
  8. objectClass: olcGlobal
  9. cn: config
  10. olcArgsFile: /var/run/openldap/slapd.args
  11. olcPidFile: /var/run/openldap/slapd.pid
  12. #
  13. # TLS settings
  14. #
  15. olcTLSCACertificatePath: /etc/openldap/certs
  16. olcTLSCertificateFile: "OpenLDAP Server"
  17. olcTLSCertificateKeyFile: /etc/openldap/certs/password
  18. #
  19. # Do not enable referrals until AFTER you have a working directory
  20. # service AND an understanding of referrals.
  21. #
  22. #olcReferral: ldap://root.openldap.org
  23. #
  24. # Sample security restrictions
  25. # Require integrity protection (prevent hijacking)
  26. # Require -bit (3DES or better) encryption for updates
  27. # Require -bit encryption for simple bind
  28. #
  29. #olcSecurity: ssf= update_ssf= simple_bind=
  30.  
  31. #
  32. # Load dynamic backend modules:
  33. # - modulepath is architecture dependent value (/-bit system)
  34. # - back_sql.la backend requires openldap-servers-sql package
  35. # - dyngroup.la and dynlist.la cannot be used at the same time
  36. #
  37.  
  38. #dn: cn=module,cn=config
  39. #objectClass: olcModuleList
  40. #cn: module
  41. #olcModulepath: /usr/lib/openldap
  42. #olcModulepath: /usr/lib64/openldap
  43. #olcModuleload: accesslog.la
  44. #olcModuleload: auditlog.la
  45. #olcModuleload: back_dnssrv.la
  46. #olcModuleload: back_ldap.la
  47. #olcModuleload: back_mdb.la
  48. #olcModuleload: back_meta.la
  49. #olcModuleload: back_null.la
  50. #olcModuleload: back_passwd.la
  51. #olcModuleload: back_relay.la
  52. #olcModuleload: back_shell.la
  53. #olcModuleload: back_sock.la
  54. #olcModuleload: collect.la
  55. #olcModuleload: constraint.la
  56. #olcModuleload: dds.la
  57. #olcModuleload: deref.la
  58. #olcModuleload: dyngroup.la
  59. #olcModuleload: dynlist.la
  60. #olcModuleload: memberof.la
  61. #olcModuleload: pcache.la
  62. #olcModuleload: ppolicy.la
  63. #olcModuleload: refint.la
  64. #olcModuleload: retcode.la
  65. #olcModuleload: rwm.la
  66. #olcModuleload: seqmod.la
  67. #olcModuleload: smbk5pwd.la
  68. #olcModuleload: sssvlv.la
  69. #olcModuleload: syncprov.la
  70. #olcModuleload: translucent.la
  71. #olcModuleload: unique.la
  72. #olcModuleload: valsort.la
  73.  
  74. #
  75. # Schema settings
  76. #
  77.  
  78. dn: cn=schema,cn=config
  79. objectClass: olcSchemaConfig
  80. cn: schema
  81.  
  82. include: file:///etc/openldap/schema/core.ldif
  83.  
  84. #
  85. # Frontend settings
  86. #
  87.  
  88. dn: olcDatabase=frontend,cn=config
  89. objectClass: olcDatabaseConfig
  90. objectClass: olcFrontendConfig
  91. olcDatabase: frontend
  92. #
  93. # Sample global access control policy:
  94. # Root DSE: allow anyone to read it
  95. # Subschema (sub)entry DSE: allow anyone to read it
  96. # Other DSEs:
  97. # Allow self write access
  98. # Allow authenticated users read access
  99. # Allow anonymous users to authenticate
  100. #
  101. #olcAccess: to dn.base="" by * read
  102. #olcAccess: to dn.base="cn=Subschema" by * read
  103. #olcAccess: to *
  104. # by self write
  105. # by users read
  106. # by anonymous auth
  107. #
  108. # if no access controls are present, the default policy
  109. # allows anyone and everyone to read anything but restricts
  110. # updates to rootdn. (e.g., "access to * by * read")
  111. #
  112. # rootdn can always read and write EVERYTHING!
  113. #
  114.  
  115. #
  116. # Configuration database
  117. #
  118.  
  119. dn: olcDatabase=config,cn=config
  120. objectClass: olcDatabaseConfig
  121. olcDatabase: config
  122. olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,c
  123. n=auth" manage by * none
  124.  
  125. #
  126. # Server status monitoring
  127. #
  128.  
  129. dn: olcDatabase=monitor,cn=config
  130. objectClass: olcDatabaseConfig
  131. olcDatabase: monitor
  132. olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,c
  133. n=auth" read by dn.base="cn=root,dc=test,dc=com" read by * none
  134.  
  135. #
  136. # Backend database definitions
  137. #
  138.  
  139. dn: olcDatabase=hdb,cn=config
  140. objectClass: olcDatabaseConfig
  141. objectClass: olcHdbConfig
  142. olcDatabase: hdb
  143. olcSuffix: dc=test,dc=com
  144. olcRootDN: cn=root,dc=test,dc=com
  145. olcRootPW: 1234qwer
  146. olcDbDirectory: /var/lib/ldap
  147. olcDbIndex: objectClass eq,pres
  148. olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub

导入配置数据库

  1. [root@zabbix1 openldap-servers]# slapadd -n -F /etc/openldap/slapd.d -l /usr/share/openldap-servers/slapd.ldif
  2. _#################### 100.00% eta none elapsed none fast!
  3. Closing DB...

启动slapd

1.第一种(因为上面我们使用了明文,所以这里有个警告)

  1. [root@zabbix1 cn=config]# slapd -F /etc/openldap/slapd.d
  2. tlsmc_get_pin: INFO: Please note the extracted key file will not be protected with a PIN any more, however it will be still protected at least by file permissions.

2.第二种

  1. [root@zabbix1 system]# systemctl status slapd
  2. slapd.service - OpenLDAP Server Daemon
  3. Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
  4. Active: failed (Result: exit-code) since Tue -- :: CST; 4min 43s ago
  5. Docs: man:slapd
  6. man:slapd-config
  7. man:slapd-hdb
  8. man:slapd-mdb
  9. file:///usr/share/doc/openldap-servers/guide.html
  10. Process: ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=/FAILURE)
  11. Main PID: (code=exited, status=/SUCCESS)
  12.  
  13. Oct :: zabbix1 check-config.sh[]: Read/write permissions for DB file '/var/lib/ldap/log.0000000001' are required.
  14. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  15. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session closed for user ldap
  16. Oct :: zabbix1 check-config.sh[]: Read/write permissions for DB file '/var/lib/ldap/id2entry.bdb' are required.
  17. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  18. Oct :: zabbix1 check-config.sh[]: Read/write permissions for DB file '/var/lib/ldap/dn2id.bdb' are required.
  19. Oct :: zabbix1 systemd[]: slapd.service: control process exited, code=exited status=
  20. Oct :: zabbix1 systemd[]: Failed to start OpenLDAP Server Daemon.
  21. Oct :: zabbix1 systemd[]: Unit slapd.service entered failed state.
  22. Oct :: zabbix1 systemd[]: slapd.service failed.

权限问题

  1. [root@zabbix1 lib]# chown -R ldap.ldap /etc/openldap/
  2. [root@zabbix1 lib]# chown -R ldap.ldap /var/lib/ldap/
  1. [root@zabbix1 lib]# systemctl start slapd
  2. [root@zabbix1 lib]# systemctl status slapd
  3. slapd.service - OpenLDAP Server Daemon
  4. Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
  5. Active: active (running) since Tue -- :: CST; 2s ago
  6. Docs: man:slapd
  7. man:slapd-config
  8. man:slapd-hdb
  9. man:slapd-mdb
  10. file:///usr/share/doc/openldap-servers/guide.html
  11. Process: ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=/SUCCESS)
  12. Process: ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=/SUCCESS)
  13. Main PID: (slapd)
  14. CGroup: /system.slice/slapd.service
  15. └─ /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///
  16.  
  17. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  18. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  19. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  20. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session closed for user ldap
  21. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  22. Oct :: zabbix1 runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
  23. Oct :: zabbix1 slapd[]: @(#) $OpenLDAP: slapd 2.4. (May ::) $
  24. mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4./openldap-2.4./servers/slapd
  25. Oct :: zabbix1 slapd[]: slapd starting
  26. Oct :: zabbix1 systemd[]: Started OpenLDAP Server Daemon.

测试

  1. [root@zabbix1 lib]# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
  2. # extended LDIF
  3. #
  4. # LDAPv3
  5. # base <> with scope baseObject
  6. # filter: (objectclass=*)
  7. # requesting: namingContexts
  8. #
  9.  
  10. #
  11. dn:
  12. namingContexts: dc=test,dc=com
  13.  
  14. # search result
  15. search:
  16. result: Success
  17.  
  18. # numResponses:
  19. # numEntries:

导入一些基本schema

  默认已经导入了core.schema

  1. [root@zabbix1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
  2. SASL/EXTERNAL authentication started
  3. SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
  4. SASL SSF:
  5. adding new entry "cn=cosine,cn=schema,cn=config"
  6.  
  7. [root@zabbix1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
  8. SASL/EXTERNAL authentication started
  9. SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
  10. SASL SSF:
  11. adding new entry "cn=nis,cn=schema,cn=config"
  12.  
  13. [root@zabbix1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
  14. SASL/EXTERNAL authentication started
  15. SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
  16. SASL SSF:
  17. adding new entry "cn=inetorgperson,cn=schema,cn=config"

创建用户

  1. [root@zabbix1 ~]# cat base.ldif
  2. dn: dc=test,dc=com
  3. o: ilan com
  4. dc: test
  5. objectClass: top
  6. objectClass: dcObject
  7. objectclass: organization
  8.  
  9. dn: cn=root,dc=test,dc=com
  10. cn: root
  11. objectClass: organizationalRole
  12. description: Directory Manager
  13.  
  14. dn: ou=People,dc=test,dc=com
  15. ou: People
  16. objectClass: top
  17. objectClass: organizationalUnit
  18.  
  19. dn: ou=Group,dc=test,dc=com
  20. ou: Group
  21. objectClass: top
  22. objectClass: organizationalUnit
  23.  
  24. [root@zabbix1 ~]# ldapadd -x -w "1234qwer" -D "cn=root,dc=test,dc=com" -f /root/base.ldif
  25. adding new entry "dc=test,dc=com"
  26.  
  27. adding new entry "cn=root,dc=test,dc=com"
  28.  
  29. adding new entry "ou=People,dc=test,dc=com"
  30.  
  31. adding new entry "ou=Group,dc=test,dc=com"
  32.  
  33. [root@zabbix1 ~]# ldapadd -x -w "1234qwer" -D "cn=root,dc=test,dc=com" -f /root/user.ldif
  34. adding new entry "uid=test,ou=People,dc=test,dc=com"
  35.  
  36. [root@zabbix1 ~]# cat user.ldif
  37. dn: uid=test,ou=People,dc=test,dc=com
  38. objectClass: inetOrgPerson
  39. objectClass: posixAccount
  40. objectClass: shadowAccount
  41. cn: test
  42. sn: test
  43. userPassword: 1234qwer
  44. loginShell: /bin/bash
  45. uidNumber:
  46. gidNumber:
  47. homeDirectory: /home/test
  48. mail: test@test.com

查看结果

客户端工具为LDAP Admin

open-ldap服务安装(1)的更多相关文章

  1. centos6.5安装配置LDAP服务[转]

    安装之前查一下 1 find / -name openldap* centos6.4默认安装了LDAP,但没有装ldap-server和ldap-client 于是yum安装 1 su root 2 ...

  2. LDAP服务端安装

    安装环境: 10.43.159.9 root/zdh1234 使用离线的yum源安装,如果机器重启过需要重新挂载镜像 mount /dev/cdrom /media/zidong/ 1.查看openl ...

  3. winmail安装完成后,SMTP/POP3/ADMIN/HTTP/IMAP/LDAP服务不能启动?

    问题原因: 1.特殊端口被占用,可以用命令netstat -ano 查看 2.阿帕奇网络服务 httpd 未开启 解决方案:开启服务后,登录管理工具,点注册,它会自动跳出"httpd通过防火 ...

  4. LDAP服务部署

    1.安装基本环境 # yum -y install openldap openldap-devel openldap-servers openldap-clients 2.配置LDAP服务端 (1)拷 ...

  5. ldap配置系列一:ldap的安装

    ldap的安装 ldap的简介 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简 ...

  6. CentOS 7下Samba服务安装与配置详解

    1. Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共 ...

  7. [ LDAP ] LDAP服务搭建及应用

    ldap 搭建及应用 node1: 192.168.118.14node2: 192.168.118.25 ldap server : 192.168.118.14 1. 安装LDAP服务器 [roo ...

  8. LDAP 服务搭建和后期管理

    LDAP 服务 本文主要在debian配置,如果需要在CentOS上部署,需要修改大部分的路劲,这里需要自行修改. LDAP 服务按照个人理解,也可使理解为一个数据库,但是这个数据库的读写性能不像 M ...

  9. 快速部署ldap服务

    快速部署ldap服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LDAP概述 .什么是目录服务 ()目录是一类为了浏览和搜索数据二十几的特殊的数据库,例如:最知名的的微软公 ...

  10. Samba服务安装

    安装Samba服务   1.在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装. # yum install samba samba-client samba-swat 有依赖关 ...

随机推荐

  1. Java API 读取HDFS的单文件

    HDFS上的单文件: -bash-3.2$ hadoop fs -ls /user/pms/ouyangyewei/data/input/combineorder/repeat_rec_categor ...

  2. Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法

    Android 65K问题相信困惑了不少人,尽管AS的出来能够通过分dex高速解决65K问题,可是同一时候也easy由于某些代码没有打包到MainDex里引起NoClassDefFoundError. ...

  3. 【九章算法免费讲座第一期】转专业找CS工作的“打狗棒法”

    讲座时间: 美西时间6月5日18:30-20:00(周五) 北京时间6月6日09:30-11:00(周六a.m) 讲座安排: 免费在线直播讲座 报名网址: http://t.cn/R2XgMSH,或猛 ...

  4. Fragment进阶(四)-----&gt;參数传递3种写法

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  5. 【HDU 6162】 Ch’s gift

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6162 [算法] 离线树剖 我们知道,u到v路径上权值为[A,B]的数的和 = u到v路径上权值小于 ...

  6. hihoCoder 1187

    今天BC爆0了....但是日子还是要过的....要回学校毕业了~~大学就这么“荒废”了. 这个是hihoCoder的1187,比较基础的一道题. 题目链接: http://hihocoder.com/ ...

  7. Scala学习2 ———— 三种方式完成HelloWorld程序

    三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. 按照第一篇在windows下安装好scal ...

  8. Bootstrap栅格系统&媒体查询

    bootstrap中几乎所有元素的盒子模型为IE下的盒模型,通俗点说就是box-sizing设置成了:border-box.   栅格系统 媒体查询 媒体查询是非常别致的"有条件的 CSS ...

  9. (转) 前端模块化:CommonJS,AMD,CMD,ES6

    模块化的开发方式可以提高代码复用率,方便进行代码的管理.通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数.目前流行的js模块化规范有CommonJS.AMD.CMD以及ES6的模块 ...

  10. MYSQL 代码删除和添加表格列方法

    一个表格建立后用代码删除或添加列: -- 删除列alter table teacher drop column create_time;-- 添加列alter table teacher add co ...