• OpenLDAP安装与配置


    系统:ubuntu 14.04

    安装:

      1. sudo apt-get install slapd ldap-utils

      2. 在1的过程中会让你输了admin密码

    配置:

      如果安装过,只是想配置OpenLDAP,可以运行 sudo dpkg-reconfigure slapd

    配置分三种,1使用LDIF配置,2使用slapd.conf配置,3使用目录中的/etc/ldap/slapd.d/配置

      1. LDIF配置,格式如下:

    # global configuration settings
    dn: cn=config
    objectClass: olcGlobal
    cn: config
    <global config settings>
    # schema definitions
    dn: cn=schema,cn=config
    objectClass: olcSchemaConfig
    cn: schema
    <system schema>
    dn: cn={X}core,cn=schema,cn=config
    objectClass: olcSchemaConfig
    cn: {X}core
    <core schema>
    # additional user-specified schema
    ...
    # backend definitions
    dn: olcBackend=<typeA>,cn=config
    objectClass: olcBackendConfig
    olcBackend: <typeA>
    <backend-specific settings>
    # database definitions
    dn: olcDatabase={X}<typeA>,cn=config
    objectClass: olcDatabaseConfig
    olcDatabase: {X}<typeA>
    <database-specific settings>
    # subsequent definitions and settings
    ...
    

      这里给出一个样例,如下:

    ### backend.ldif ###
    # Load dynamic backend modules
    dn: cn=module,cn=config
    objectClass: olcModuleList
    cn: module
    olcModulepath: /usr/lib/ldap
    olcModuleload: back_hdb.la
    
    # Database settings
    dn: olcDatabase=hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: {1}hdb
    olcSuffix: dc=example,dc=com
    olcDbDirectory: /var/lib/ldap
    olcRootDN: cn=Manager,dc=example,dc=com
    olcRootPW: secret
    olcDbConfig: set_cachesize 0 2097152 0
    olcDbConfig: set_lk_max_objects 1500
    olcDbConfig: set_lk_max_locks 1500
    olcDbConfig: set_lk_max_lockers 1500
    olcDbIndex: objectClass eq
    olcLastMod: TRUE
    olcDbCheckpoint: 512 30
    olcAccess: to attrs=userPassword by dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
    olcAccess: to attrs=shadowLastChange by self write by * read
    olcAccess: to dn.base="" by * read
    olcAccess: to * by dn="cn=Manager,dc=example,dc=com" write by * read
    ### end backend.ldif ###
    

      然后运行如下命令使配置生效:

    ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
    

      2. slapd.conf配置

      /etc/ldap/slapd.d 是2.4.x版本新采用的配置文件目录,但手动编辑slapd.d目录下ldif是非常痛苦的,如果你不习惯新的配置目录格式,你可以通过修改/etc/default/slapd中的SLAPD_CONF=SLAPD_CONF="/etc/ldap/slapd.conf"

    slapd.conf配置形式官方已经废弃了但依然支持,你还可以选择在编辑完熟悉的slapd.conf后使用openldap提供的slaptest工具将它转换成slapd.d配置目录:

    mv /etc/ldap/slapd.d <path>/slapd.d     #备份原目录
    cp /usr/share/slapd/slapd.conf /etc/ldap/
    cd /etc/ldap/
    vim slapd.conf        #配置ldap
    slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/      #把修改好的sldapd.conf转换成slapd.d/的配置形式
    chown -R openldap:openldap /etc/ldap/slapd.d/     #修改转换好的slapd.d/的用户和组
    

      slapd.conf配置修改样例:

     5.    # BDB definition for the example.com
      6.    database bdb
      7.    suffix "dc=example,dc=com"
      8.    directory /usr/local/var/openldap-data
      9.    rootdn "cn=Manager,dc=example,dc=com"
     10.    rootpw secret
     11.    # indexed attribute definitions
     12.    index uid pres,eq
     13.    index cn,sn pres,eq,approx,sub
     14.    index objectClass eq
     15.    # database access control definitions
     16.    access to attrs=userPassword
     17.        by self write
     18.        by anonymous auth
     19.        by dn.base="cn=Admin,dc=example,dc=com" write
     20.        by * none
     21.    access to *
     22.        by self write
     23.        by dn.base="cn=Admin,dc=example,dc=com" write
     24.        by * read
    

      参考:The slapd Configuration File

    上面例子中rootpw都是明文显示的,也可以加密存储:

    $ slappasswd -h {SHA} -s secret
    {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=
    

    用{SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=代替secret即可。

     

    1. backend & database

    ldap的后台进程slapd接收、响应请求,但实际存储数据、获取数据的操作是由Backends做的,而数据是存放在database中,所以你可以看到往往你可以看到backenddatabase指令是一样的值如 bdb 。一个 backend 可以有多个 database instance,但每个 database 的 suffix 和 rootdn 不一样。openldap 2.4版本的模块是动态加载的,所以在使用backend时需要moduleload back_bdb指令。

    bdb是一个高性能的支持事务和故障恢复的数据库后端,可以满足绝大部分需求。许多旧文档里(包括官方)说建议将bdb作为首选后端服务(primary backend),但2.4版文档明确说hdb才是被首先推荐使用的,这从 2.4.40 版默认安装后的配置文件里也可以看出。hdb是基于bdb的,但是它通过扩展的索引和缓存技术可以加快数据访问,修改entries会更有效率,有兴趣可以访问上的链接或slapd.backends

    另外config是特殊的backend,用来在运行时管理slapd的配置,它只能有一个实例,甚至无需显式在slapd.conf中配置。

  • 相关阅读:
    C#图形编程
    深入浅出话事件(上)
    .NET名称空间对应的类集
    Equals() 和运算符 == 的重写准则(C# 编程指南)
    Implement EventArgs
    CLS(公共语言规范)的CLSCompliant(跨语言调用)
    学习MSCOREE.dll是托管程序的入口点
    设计模式之原型模式代码示例
    The disk cannot be added to Cluster Shared Volumes because it does not have any suitable partitions
    RAID小结
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/5127563.html
Copyright © 2020-2023  润新知