Centos6.5安装OpenLDAP

一、基本概念
DN、OU、DC、O,这些概念网上都有资料。
一般用来做用户认证,我是拿来做系统用户认证,很多人做FTP或Samba用户认证。
 
二、Server端的安装与配置
openldap这玩意对细节的要求非常苛刻,稍不注意就会报错。
 
SERVER端,操作系统:CentOS 6.5:
I、OpenLDAP的安装与基本配置
1)Yum安装
 
  1. yum -y install openldap openldap-servers openldap-clients openldap-devel  //一定要全安装,否则后面可能会报错 
2)vi /etc/sysconfig/ldap,确保SLAPD_LDAPI=yes
3)vi /etc/openldap/slapd.conf,添加如下两行:
  1. pidfile /var/run/openldap/slapd.pid
  2. argsfile /var/run/openldap/slapd.args
 按esc切换到底行命令行模式,输入“:wq”,保存并退出。
4)备份/etc/openldap/slapd.d目录,然后重建该目录,并生成文件:
  1. cp -a /etc/openldap/slapd.d /etc/openldap/slapd.d.BAK2012-03-26
  2. rm -rf /etc/openldap/slapd.d/*
  3. slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
5)编辑重新生成后的配置文件:
   a) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif,修改第4行配置如下:
  1. olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
   注意严格按照原文件单词之间的空格数进行修改,by前面有两个空格
   b) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif,输入以下行:
  1. dn: olcDatabase={1}monitor
  2. objectClass: olcDatabaseConfig
  3. olcDatabase: {1}monitor
  4. olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
  5. olcAddContentAcl: FALSE
  6. olcLastMod: TRUE
  7. olcMaxDerefDepth: 15
  8. olcReadOnly: FALSE
  9. olcMonitoring: FALSE
  10. structuralObjectClass: olcDatabaseConfig
  11. creatorsName: cn=config
  12. modifiersName: cn=config
注:以上所有输入行,确保行首无空格。 
6)修改slapd.d目录的属主和权限,并启动ldap:
  1. chown -R ldap. /etc/openldap/slapd.d
  2. chmod -R 700 /etc/openldap/slapd.d
  3. /etc/rc.d/init.d/slapd start
  4. chkconfig slapd on
 
II、 初始化用户认证信息
1)依次输入以下命令,并确保无报错:
  1. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif
  2. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
  3. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
  4. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
   最有可能出现的错误:no permission to create parent directory. 我遇到了几次,没办法解决,最后是严格按照上面的步骤,重新安装了一遍才OK。
2)创建管理员密码,尽量使用高强度密码:
slappasswd 
注:a) 上述命令会生成一个经过SSHA算法加密的密码,保存该密文,后面要用到
      b) slappasswd支持的加密算法,可使用man slappasswd查看
 
3)创建backend.ldif文件,输入以下行:
  1. # replace the section "dc=***,dc=***" to your own suffix
  2. # replace the section "olcRootPW: ***" to your own password generated by slappasswd above
  3. dn: cn=module,cn=config
  4. objectClass: olcModuleList
  5. cn: module
  6. olcModulepath: /usr/lib64/openldap
  7. olcModuleload: back_hdb
  8.  
  9. dn: olcDatabase=hdb,cn=config
  10. objectClass: olcDatabaseConfig
  11. objectClass: olcHdbConfig
  12. olcDatabase: {2}hdb
  13. olcSuffix: dc=abc,dc=com
  14. olcDbDirectory: /var/lib/ldap
  15. olcRootDN: cn=root,dc=abc,dc=com
  16. olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
  17. olcDbConfig: set_cachesize 0 2097152 0
  18. olcDbConfig: set_lk_max_objects 1500
  19. olcDbConfig: set_lk_max_locks 1500
  20. olcDbConfig: set_lk_max_lockers 1500
  21. olcDbIndex: objectClass eq
  22. olcLastMod: TRUE
  23. olcMonitoring: TRUE
  24. olcDbCheckpoint: 512 30
  25. olcAccess: to attrs=userPassword by dn="cn=root,dc=abc,dc=com" write by anonymous auth by self write by * no
  26. ne
  27. olcAccess: to attrs=shadowLastChange by self write by * read
  28. olcAccess: to dn.base="" by * read
  29. olcAccess: to * by dn="cn=root,dc=abc,dc=com" write by * read
  然后执行如下命令:
  1. ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
4)编辑frontend.ldif,并输入以下行:
  1. # replace the section "dc=***,dc=***" to your own suffix
  2. # replace the section "userPassword: ***" to your own password generated by slappasswd above
  3. dn: dc=abc,dc=com
  4. objectClass: top
  5. objectClass: dcObject
  6. objectclass: organization
  7. o: abc com
  8. dc: abc
  9.  
  10. dn: cn=root,dc=abc,dc=com
  11. objectClass: simpleSecurityObject
  12. objectClass: organizationalRole
  13. cn: root
  14. userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
  15.  
  16. dn: ou=people,dc=abc,dc=com
  17. objectClass: organizationalUnit
  18. ou: people
  19.  
  20. dn: ou=groups,dc=abc,dc=com
  21. objectClass: organizationalUnit
  22. ou: groups
  然后执行如下命令:
  1. ldapadd -x -D cn=root,dc=abc,dc=com -W -f frontend.ldif //注意替换自己的cn和dc 
   最有可能出现的错误:ldap_bind: Invalid credentials (49)。检查两方面:上述命令中的cn和dc是否输入正确,以及密码是否输入正确。
 
5) 如果忘记管理员密码,或者想修改该密码:
  1. ldappasswd -x -v -S -W -D cn=root,dc=abc,dc=com
  1. 然后重启openLDAP:/etc/init.d/slapd restart
 
 6)开启OpenLDAP使用的389端口:
 

  1. /etc/init.d/iptables stop
  2. /sbin/iptables -I INPUT -p tcp --dport 389 -j ACCEPT
  3. /etc/rc.d/init.d/iptables save
  4. /etc/init.d/iptables status
  5. /etc/init.d/iptables restart
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值