zoukankan      html  css  js  c++  java
  • OpenLDAP在LINUX下的安装说明

    安装环境:
    redhat9.0
    安装所需软件(都是以源码的方式存在的)
    openldap-2.1.29    hrrp://www.openldap.org
    Derkeley DB 4.2.52  http://www.sleepycat.com


    安装步骤:
    (确认是用root用户登录)

    1、由于openldap需要Berkeley DB来存放数据,所以先安装Berkeley DB 4.2.52。

       解压
       #tar -zxvf  db-4.2.52.NC.tar.gz
       解压完成后,会生成一个db-4.2.52.NC的目录,进入该目录下的build_unix目录,执行命令进行配置安装。
       #../dist/configure  --prefix=/usr/local/BerkeleyDB (将Derkeley DB安装到/usr/local/DerkeleyDB目录下)。
       #make
       #make install
       安装完成活,要把/usr/local/BerkeleyDB/lib的库路径加到/etc/ld.so.conf文件内,添加完成后执行一次ldconfig,使配置文件生效。
    2、安装openLDAP

       解压
       #tar -zxvf openldap-2.1.29.tgz
       解压后生成一个openldap-2.1.29目录,进入该目录执行以下命令进行配置安装。
       #env CPPFLAGS="-I/usr/local/gdbm-1.8.3/include" LDFLAGS="-L/usr/local/gdbm-1.8.3/lib"
        ./configure --prefix=/usr/local/topldap --enable-ldbm  --enable-bdb=no
        (注意以上的配置语句,要配置资料库的include和lib路径,否则在配置到资料库、相关内容时会提示Berkeley DB版本不兼容,
        并中段配置。如果没有--enbale-ldbm=选项,在make test时会提示ldbm找不到)
       #make depend
       #make
       #make test
       在make test 的时候如果没有出现错误,就可以安装了,如果有什么错误,去看看以上内容,有没有全部都作。
       开始安装
       #make install
       安装完成之后,在/usr/local/目录下将会出现openldap文件夹。
       
    3、现在相关的软件已经安装完成了,现在可以进行配置了。
       配置文件在软件的安装目录的etc/openldap下,主要的是slapd.comf和ldap.conf。在进行配置之前最好先将要配置的文件备份一份。
       先配置slapd.conf文件。
       在配置文件中添加:
       include /usr/local/openldap/ete/openldap/schema/core.schema
       include /usr/local/openldap/ete/openldap/schema/corba.schema
       include /usr/local/openldap/ete/openldap/schema/cosine.schema
       include /usr/local/openldap/ete/openldap/schema/inetorgperson.schema
       include /usr/local/openldap/ete/openldap/schema/misc.schema
       include /usr/local/openldap/ete/openldap/schema/openldap.schema
       include /usr/local/openldap/ete/openldap/schema/nis.schema
       include /usr/local/openldap/ete/openldap/schema/java.schema
       (包含文件按一定顺序,因为文件里面的属性存在附属关系,如果顺序不对服务会出现问题)
      
       在argsfile    /usr/local/openldap/var/slapd.args下面添加
       loglevel 1
       增加了日志功能,需修改syslog配置文件,在文件中增加一项:local4.* /var/log/ldap.log
       日志的级别如下:
             Debugging Levels Level Description
                  -1 enable all debugging
                   0 no debugging
                   1 trace function calls
                   2 debug packet handling
                   4 heavy trace debugging
                   8 connection management
                  16 print out packets sent and received
                  32 search filter processing
                  64 configuration file processing
                 128 access control list processing
                 256 stats log connections/operations/results
                 512 stats log entries sent
                1024 print communication with shell backends
                2048 print entry parsing debugging
         默认的情况下是256
      
       将文件中的
       suffix        "dc=my-domain,dc=com"
       rootdn        "cn=Manager,dc=my-domain,dc=com"
       修改成自己的目录根,指定自己根的管理员。
       rootdw 是管理员的密码,默认密码是secret,这里可以使用MD5加密。
      
       现在已经能成功的启动服务了。但是没有对目录访问的权限进行设定:
       access to attr=userPassword
               by self write
               by  anonymous auth
       指的是:userPassword只能自己修改,有效验证用户查询,如果加上
              by dn="cn=root,dc=it,dc=com"
       那样cn=root,dc=it,dc=com也可以更改其他人的userPassword.
       access to *
               by self write
           by self read
      指的是所有的信息都可以自己查询,自己修改。
      access to dn=".*,dc=it,dc=com"
              by self write
          by * read
      允许用户访问所有没有被控制访问限制的信息。
      具体详细用法请查看www.openldap.org。
     
     
      到现在openldap已经配置完成了,进入安装目录的libexec下,执行
      #./sladp (注意是sladp,不是sldap)
      如果没有提示什么出错信息,直接返回shell状态,就说明服务器正常启动了,
      你可以查询日志或用ps -aux查看。或用以下命令查询服务器。
     
      执行下面的命令来查看一下服务是不是正常启动了启动。
      #ldapsearch -x -b "dc=it,dc=com"(你在配置文件中定义的自己的根目录),如果反悔一些信息那就
      是启动正常。
     
      用下面的、命令、来查看一下389端口是不是已经被监听了
      #netstat -an | grep 389
     
      如果没有提示什么错误,但是服务也没有启动,就可以用
      #./sladp -d 256
      可以看到提示的什么信息,一般都是配置文件错误,根据错误信息好好查看一下配置文件。
      一定要注意配置文件中的空格,该有的一定要有,有的时候看到整个配置文件没有什么错误,
      可就事启动不了,有可能是有的地方前面没有加上空格。
     
     
      配置ldap.conf文件。该文档相当简单,其实不和配置也能正常操作。
      只要将BASE dc=it,dc=com 设置成为自己的目录起点
     
    4、现在服务器已经正常运作了,可以录入信息了。信息的录入方法有三种,一种是手工录入,一种是.ldif文件格式录入,一种是脚本
      自动录入。我们先从最基础的手工录入开始介绍,了解录入信息的格式。明白了手工录入的格式,其它两种方式都很容易明白。
      信息录入用到ldapadd这个程序,他存在于安装目录下的bin中,具体用法如下:
      第一步要建立DN:
      #ldapadd -x -D  'cn=root,dc=it,dc=com' -W   (-x 表示简单验证,-D表示指定目录,-W表示弹出密码输入提示)
      Enter LDAP Password              (提示输入管理员密码,在sladp.conf中已经配置的那个密码)
      dn: dc=it,dc=com
      objectClass: dcObject
      objectClass: organization
      dc:it
      o:Corportion
      description:d Corporation
      (注意:每行后面一定不要有空格)
     
      第二步是建立接点:
      #ldapadd -x -D 'cn=root,dc=it,dc=com' -W
      dn:uid=zyx2,dc=it,dc=com
      objectClass:person
      objectClass:organizationalPerson
      objectClass:inetOrgPerson
      uid:zyx2
      cn:zyx2
      sn:zyx2
      mail:zyx@zyx.com
      userPassword:zyx
      telephoneNumber:13913991399
      homePhone:01087788888.
     
      输入完所有的信息后,安Ctrl+d结束存盘。如果出现错误信息,请查一下对象类和属性的对应关系有没有输入错误。
      这里面最容易出错的地方是对象类和属性的对应关系出错,对象类和属性是在schema文档中定义的。它们之间的关系是这样的,
      对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。
      比如:inetOrgPerson模式包括以下信息:
      departmentNumber
      employeeType
      givenName
      audio
      businessCategory
      carLicense
      displayName
      emlpyeeNumber
      homePhone
      homePostalAddress
      manager
      photo
      roomNumber
      等等,详见inetorgperson.schema。
      schema是openldap中的关键,一定要好好查看安装目录下的/etc/schema中的文件。掌握schema的格式和常用属性所对应的类。
     
     
      介绍完了手工录入的方法,现在介绍第二种方法,用.ldif文件格式录入。用文字编辑工具写好.ldif文件。
      下面是一个完成的test.ldif文件。

    dn: dc=it,dc=com
    dc: it
    description: d Corporation
    objectClass: dcObject
    objectClass: organization
    o: Corporation

    dn: uid=zyx, dc=it,dc=com
    telephoneNumber: 13810246737
    mail: starxing@starxing.com
    userPassword:: sssssssss
    uid: zyx
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    homePhone: 12345678901
    sn: zyx
    cn: zyx

    dn: ou=people, dc=it,dc=com
    userPassword:: c3Rhcnhpbmc=
    ou: people
    description: User Info
    objectClass: top
    objectClass: organizationalUnit

    dn: uid=1,ou=people, dc=it,dc=com
    telephoneNumber: 13800000414
    userPassword:: sssssssss
    uid: 1
    jpegPhoto:: MTIzNDU2Nzg5MA==
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    sn: hhh
    cn: hhh

    dn: cn=root, dc=it,dc=com
    mail: root@root.com
    userPassword:: secret
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    sn: root
    cn: root

    dn: uid=3,ou=people, dc=it,dc=com
    telephoneNumber: 13810241111
    mail: ddd@dd.com
    userPassword:: sssssssss
    uid: 3
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    sn: sss
    cn: sss

    dn: uid=qq, dc=it,dc=com
    telephoneNumber: 65498732102
    mail: qq@qq.com
    userPassword::sssssssss
    uid: qq
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    sn: qq
    cn: qq

    dn: uid=zyx,ou=people, dc=it,dc=com
    telephoneNumber: 13810246737
    mail: starxing@starxing.com
    userPassword:: sssssssss
    uid: zyx
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    homePhone: 12345678901
    sn: 张彦星
    cn: zyx

    dn: ou=managers, dc=it,dc=com
    userPassword:: sssssssss
    ou: managers
    description: mangers Info
    objectClass: top
    objectClass: organizationalUnit

    dn: cn=starxing,ou=managers, dc=it,dc=com
    mail: zyx1220@yahoo.com.cn
    userPassword:: sssssssss
    description: mananger for people
    objectClass: person
    objectClass: organizationalPerson
    objectClass: top
    objectClass: inetOrgPerson
    sn: staring
    cn: starxing

    dn: ou=people,ou=managers, dc=it,dc=com
    userPassword:: sssssssss
    ou: people
    objectClass: top
    objectClass: organizationalUnit
    description: User Info

    dn: uid=1,ou=people,ou=managers, dc=it,dc=com
    telephoneNumber: 13800000414
    uid: 1
    userPassword:: sssssssss
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    jpegPhoto:: MTIzNDU2Nzg5MA==
    sn: hhh
    cn: hhh

    dn: uid=3,ou=people,ou=managers, dc=it,dc=com
    telephoneNumber: 13810241111
    mail: ddd@dd.com
    uid: 3
    userPassword:: sssssssss
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    sn: ssssss
    cn: ssssss

    dn: uid=zyx,ou=people,ou=managers, dc=it,dc=com
    telephoneNumber: 13810246737
    mail: starxing@starxing.com
    uid: zyx
    userPassword:: sssssssss
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    homePhone: 12345678901
    sn: zyx
    cn: zyx
       再次提醒一下,每行的最后不要有空格,并且不能存在同一个DN的记录,执行以下命令将test.ldif文件中的内容加载到
       openldap中。
       #ldapadd -x -D "cn=root,dc=it,dc=com" -W -f /root/test.ldif   (-f 表示用文件录入信息, /root/test.ldif指的是文件的存在地方)
      
       第三种是用脚本录入方式,需要自己编写脚本。也可以使用现有的工具,比如:phpldapadmin。
      
      
      
      
       下面介绍一下openldap的常用命令。
       1 ldapsearch
         查询本人记录
         ldapsearch -x -D 'cn=root,dc=it,dc=com' -W -b 'uid=zyx,dc=it,dc=com'
         查询一个ou记录(包含成员记录)
         ldapsearch -x -D 'cn=root,dc=it,dc=com' -W -b 'ou=people,dc=it,dc=com'
       2 ldapdelete
       #ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=zyx,dc=it,dc=com'
       这样就可以删除'uid=zyx,dc=it,dc=com'记录了,应该注意一点,如果o或ou中有成员是不能删除的。
       3 ldappasswd
       #ldappasswd -x -D 'cm=root,dc=it,dc=com' -W 'uid=zyx,dc=it,dc=com' -S
       New password:
       Re-enter new password:
       Enter LDAP Password:
       就可以更改密码了,如果原来记录中没有密码,将会自动生成一个userPassword。
       4  ldapmodify
       #ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
       将modify.ldif中的记录更新原有的记录。
      
     启用sasl验证
     前提是你在系统中安装了sasl认证库,并在编译openldap时支持它,默认就支持了。到http://asg.web.cmu.edu/cyrus/下载。
     安装好之后,需要在sasl中建立相应的帐号,用以下命令可完成。
     # saslpasswd2 -c test
     
     接着配置slapd.conf文件,加入以下内容。
      sasl-regexp
      uid=(.*),cn=.*,cn=auth
      uid=$1,dc=it,dc=com
     ok,重启服务器使配置文件生效。这个配置是最大权限的配置,如果要细化请查阅相关文档。
     用以下命令测试。
     # ldapsearch -U qq -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5 采用digest-md5验证
     提示密码,输入saslpasswd2的密码。
     

     参考网站
     http://www.openldap.org/doc/admin22/
     http://asg.web.cmu.edu/cyrus/
     http://phpldapadmin.sourceforge.net/
     http://www.linux.org/docs/ldp/howto/LDAP-HOWTO/index.html
     http://www.linux.org/docs/ldp/howto/LDAP-Implementation-HOWTO/index.html
     http://www.chinaunix.com
    原文: http://blog.chinaunix.net/u/9295/showart_80425.html
  • 相关阅读:
    BZOJ1058:[ZJOI2007]报表统计(Splay,堆)
    BZOJ3224:普通平衡树(Splay)
    BZOJ3781:小B的询问(莫队)
    21. [HAOI2005] 希望小学 (wa1)
    cogs 2509. 森林大礼包
    libreoj #119. 最短路
    libreoj #514. 「LibreOJ β Round #2」模拟只会猜题意
    cogs 1647. 油田[uva572]
    css的部分应用示例
    html之表格
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/1564555.html
Copyright © 2011-2022 走看看