zoukankan      html  css  js  c++  java
  • Centos7安装OpenLDAP

    环境

    系统版本:centos7.4

    openldap版本2.4

    安装和配置

    安装并启动服务

    安装:

    yum install openldap openldap-servers openldap-clients

    拷贝数据库配置文件

    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown ldap:ldap /var/lib/ldap/DB_CONFIG

     DB_CONIFG中主要是关于Berkeley DB的相关的一些配置

     启动OpenLDAP Server:

    systemctl start slapd 
    systemctl enable slapd
    systemctl status slapd

    slapd即standard alone ldap daemon,该进程默认监听389端口

    设置root用户密码

    先用一个命令生成一个LDAP管理用户root密码:

    slappasswd
    New password:
    Re-enter new password:
    {SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo  #记住这个,下面会用到

    新建一个rootpwd.ldif(名称是自定义的)的文件:

    vi rootpwd.ldif
    
    dn: olcDatabase={0}config,cn=config
    changetype: modify
    add: olcRootPW
    olcRootPW: {SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo
    • ldif即LDAP Data Interchange Format,是LDAP中数据交换的一种文件格式。文件内容采用的是key-value形式,注意value后面不能有空格。
    • 上面内容中dn即distingush name
    • olc即Online Configuration,表示写入LDAP后不需要重启即可生效
    • changetype: modify表示修改一个entry,changetype的值可以是add,delete, modify等。
    • add: olcRootPW表示对这个entry新增了一个olcRootPW的属性
    • olcRootPW: {SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo指定了属性值

    下面使用ldapadd命令将上面的rootpwd.ldif文件写入LDAP:

    ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "olcDatabase={0}config,cn=config"

    导入schema

    导入schema,schema包含为了支持特殊场景相关的属性,可根据选择导入,这里先全部导入:

    ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done

    设定默认域

    先使用slappasswd生成一个密码:

    slappasswd
    New password:
    Re-enter new password:
    {SSHA}OpMcf0c+pEqFLZm3i+YiI2qhId1G/yM3

    新建一个domain.ldif的文件:

    vi domain.ldif
    
    dn: olcDatabase={1}monitor,cn=config
    changetype: modify
    replace: olcAccess
    olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
      read by dn.base="cn=Manager,dc=zhidaoauto,dc=com" read by * none
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcSuffix
    olcSuffix: dc=zhidaoauto,dc=com
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcRootDN
    olcRootDN: cn=Manager,dc=zhidaoauto,dc=com
    
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    add: olcRootPW
    olcRootPW: {SSHA}OpMcf0c+pEqFLZm3i+YiI2qhId1G/yM3 #替换上面生成的密码
    
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    add: olcAccess
    olcAccess: {0}to attrs=userPassword,shadowLastChange by
      dn="cn=Manager,dc=zhidaoauto,dc=com" write by anonymous auth by self write by * none
    olcAccess: {1}to dn.base="" by * read
    olcAccess: {2}to * by dn="cn=Manager,dc=zhidaoauto,dc=com" write by * read
    • olcAccess即access,该key用于指定目录的ACL即谁有什么权限可以存取什么
    • olcRootDN设定管理员root用户的distingush name
    • 注意替换上面文件内容中cn为具体的域信息
    • olcRootPW用上面新生成的密码替换

    写入:

    ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "olcDatabase={1}monitor,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"

    添加基本目录

    新建一个basedomain.ldif的文件:

    dn: dc=zhidaoauto,dc=com
    objectClass: top
    objectClass: dcObject
    objectclass: organization
    o: zhidaoauto com
    dc: zhidaoauto
    
    dn: cn=Manager,dc=zhidaoauto,dc=com
    objectClass: organizationalRole
    cn: Manager
    description: Directory Manager
    
    dn: ou=People,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Group,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: Group
    • 注意替换上面文件内容中dn为具体的域信息
    • 理解dn,cn,dc
      • DC即Domain Component,LDAP目录类似文件系统目录dc=zhidaoauto,dc=com相当于/com/zhidaoauto
      • CN即Common Name,CN有可能代表一个用户名,例如cn=Manager,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的管理员用户Manager
      • OU即Organizational Unit,例如ou=People,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的一个组织单元People

     写入:

    ldapadd -x -D cn=Manager,dc=zhidaoauto,dc=com -W -f basedomain.ldif
    Enter LDAP Password:
    adding new entry "dc=zhidaoauto,dc=com"
    
    adding new entry "cn=Manager,dc=zhidaoauto,dc=com"
    
    adding new entry "ou=People,dc=zhidaoauto,dc=com"
    
    adding new entry "ou=Group,dc=zhidaoauto,dc=com"

    测试:

    ldapsearch -LLL -W -x -D "cn=Manager,dc=zhidaoauto,dc=com" -H ldap://localhost -b "dc=zhidaoauto,dc=com"
    Enter LDAP Password:
    dn: dc=zhidaoauto,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: zhidaoauto com
    dc: zhidaoauto
    
    dn: cn=Manager,dc=zhidaoauto,dc=com
    objectClass: organizationalRole
    cn: Manager
    description: Directory Manager
    
    dn: ou=People,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Group,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: Group

    管理工具

    可以在局域网内的windows电脑上下载ldapadmin作为管理工具

    知识点:

    登录账号为:

    登录ldap的用户dn为:cn=Manager,dc=zhidaoauto,dc=com

    ou=Group和ou=People的区别:

    从ou=Group里创建的是组,从ou=People创建的是用户

    ou=People里的用户怎么加入到ou=Group下边的组呢:

    右键"yunwei"组-->properties

    这样就把ou=People里"zhaijunming"用户添加到ou=Group里的"yunwei"组了

    参考文章

    https://blog.frognew.com/2017/05/openldap-install-notes.html#ldapadmin

  • 相关阅读:
    可爱的中国电信 请问我们的电脑还属于我们自己吗?
    了解客户的需求,写出的代码或许才是最优秀的............
    DELPHI DATASNAP 入门操作(3)简单的主从表的简单更新【含简单事务处理】
    用数组公式获取字符在字符串中最后出现的位置
    在ehlib的DBGridEh控件中使用过滤功能(可以不用 MemTableEh 控件 适用ehlib 5.2 ehlib 5.3)
    格式化json返回的时间
    ExtJs中使用Ajax赋值给全局变量异常解决方案
    java compiler level does not match the version of the installed java project facet (转)
    收集的资料(六)ASP.NET编程中的十大技巧
    收集的资料共享出来(五)Asp.Net 权限解决办法
  • 原文地址:https://www.cnblogs.com/zhaijunming5/p/9522756.html
Copyright © 2011-2022 走看看