开始新的openldap安装

时间:2016-05-16 10:36:13

标签: openldap configure

我在Centos7上从头开始安装openldap

我按照openldap.org网站http://www.openldap.org/doc/admin24/quickstart.html

上的快速入门指南进行操作

在第7步之前一切正常,我在一个没有问题的自定义目录中安装了openldap

下面是我跑的命令

cd /usr/local/src
mkdir openldap
cd openldap
cp /home/user/openldap/src/* . //copied everything in the tar ball to the directory
yum install gcc openssl libdb-devel libtool-ltdl-devel.x86_64 openssl-devel.x86_64 cyrus-sasl-devel.x86_64
//yum installed every required package, including devel package for make
./configure --prefix=/usr/local/src/openldap-install   //configure to install in custom location
make depend
make
make test //all successful
make install

然后我尝试按照步骤8,编辑slapd.ldif放入我自己的域,dc = adomain,dc = com,在我的情况下,在/ usr / local / src / openldap-install / etc /的OpenLDAP / slapd.ldif

然后我将/ usr / local / src / openldap-install / sbin /目录添加到PATH环境中,方法是在profile.d目录中插入openldap_path.sh,验证它是否有效。

然后我按照第9步(我按root运行所有内容)

slapadd -F / usr / local / etc / cn = config -l /usr/local/etc/openldap/slapd.ldif

但它返回"可用的数据库不允许使用slapadd新服务器"

我不明白,我不是在迁移(正如其他一些stackoverflow帖子中所建议的那样),它是一个全新的服务器,但它不允许我继续。

任何帮助都会受到赞赏,我只是不知道接下来该做什么。

@EJP

文件如下

#
# See slapd-config(5) for details on configuration options.
# This file should NOT be world readable.
#
dn: cn=config
objectClass: olcGlobal
cn: config
#
#
# Define global ACLs to disable default read access.
#
olcArgsFile: /usr/local/src/openldap-install/var/run/slapd.args
olcPidFile: /usr/local/src/openldap-install/var/run/slapd.pid
#
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#olcReferral:   ldap://root.openldap.org
#
# Sample security restrictions
#   Require integrity protection (prevent hijacking)
#   Require 112-bit (3DES or better) encryption for updates
#   Require 64-bit encryption for simple bind
#olcSecurity: ssf=1 update_ssf=112 simple_bind=64


#
# Load dynamic backend modules:
#
#dn: cn=module,cn=config
#objectClass: olcModuleList
#cn: module
#olcModulepath: /usr/local/src/openldap-install/libexec/openldap
#olcModuleload: back_bdb.la
#olcModuleload: back_hdb.la
#olcModuleload: back_ldap.la
#olcModuleload: back_passwd.la
#olcModuleload: back_shell.la


dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema

include: file:///usr/local/src/openldap-install/etc/openldap/schema/core.ldif

# Frontend settings
#
dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend
#
# Sample global access control policy:
#   Root DSE: allow anyone to read it
#   Subschema (sub)entry DSE: allow anyone to read it
#   Other DSEs:
#       Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
#
#olcAccess: to dn.base="" by * read
#olcAccess: to dn.base="cn=Subschema" by * read
#olcAccess: to *
#   by self write
#   by users read
#   by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!
#


#######################################################################
# LMDB database definitions
#######################################################################
#
dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
**olcSuffix: dc=ldap,dc=domain,dc=com**
**olcRootDN: cn=Manager,dc=ldap,dc=domain,dc=com**
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd-config(5) for details.
# Use of strong authentication encouraged.
**olcRootPW: {SSHA}strong**
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
**olcDbDirectory:   /usr/local/src/openldap-install/var/openldap-data**
# Indices to maintain
olcDbIndex: objectClass eq

仅从slapd.ldif.default文件中更改了最后几行

及以下是ls -R

输出的安装路径中的文件树
.:
bin  etc  include  lib  libexec  sbin  share  var

./bin:
ldapadd      ldapdelete  ldapmodify  ldappasswd  ldapurl
ldapcompare  ldapexop    ldapmodrdn  ldapsearch  ldapwhoami

./etc:
openldap

./etc/openldap:
ldap.conf          schema      slapd.conf.default  slapd.ldif.default
ldap.conf.default  slapd.conf  slapd.ldif

./etc/openldap/schema:
collective.ldif    cosine.schema         java.ldif      openldap.schema
collective.schema  duaconf.ldif          java.schema    pmi.ldif
corba.ldif         duaconf.schema        misc.ldif      pmi.schema
corba.schema       dyngroup.ldif         misc.schema    ppolicy.ldif
core.ldif          dyngroup.schema       nis.ldif       ppolicy.schema
core.schema        inetorgperson.ldif    nis.schema     README
cosine.ldif        inetorgperson.schema  openldap.ldif

./include:
lber.h        ldap_cdefs.h     ldap.h         ldap_utf8.h  slapi-plugin.h
lber_types.h  ldap_features.h  ldap_schema.h  ldif.h

./lib:
liblber-2.4.so.2       libldap-2.4.so.2       libldap_r-2.4.so.2.10.7
liblber-2.4.so.2.10.7  libldap-2.4.so.2.10.7  libldap_r.a
liblber.a              libldap.a              libldap_r.la
liblber.la             libldap.la             libldap_r.so
liblber.so             libldap_r-2.4.so.2     libldap.so

./libexec:
slapd

./sbin:
slapacl  slapauth  slapdn     slappasswd  slaptest
slapadd  slapcat   slapindex  slapschema

./share:
man

./share/man:
man1  man3  man5  man8

./share/man/man1:
ldapadd.1      ldapdelete.1  ldapmodify.1  ldappasswd.1  ldapurl.1
ldapcompare.1  ldapexop.1    ldapmodrdn.1  ldapsearch.1  ldapwhoami.1

./share/man/man3:
ber_alloc_t.3                ldap_free_urldesc.3
blablablablabla
blablablablabla
blablablablabla

./share/man/man5:
ldap.conf.5       slapd-mdb.5       slapd-sql.5         slapo-ppolicy.5
blablablablabla
blablablablabla
blablablablabla

./share/man/man8:
blablablablabla
blablablablabla

./var:
run

./var/run:

修改

@EJP我有点明白你的意思。你是说默认的LDIF文件实际上是cn = config数据库?

我差不多放弃,1周的时间没有得到ldap服务器启动。我不知道问题是什么,也许清理我的一些概念实际上可以解决这里的情况?

  • 如何定义自己的数据库?我以为我已经通过改变olcsuffix做到了吗?
  • cn = config数据库与"配置数据库"?
  • 有何不同
  • 我编辑/创建哪个文件来定义我自己的数据库?
  • openldap快速入门指南的步骤8中的含义是什么包含表单的MDB数据库定义
  • openldap快速入门指南导入您的配置数据库的第9步是什么意思?这是否意味着已安装的openldap服务器没有配置?
  • 安装附带的slapd.conf文件有什么作用?它包含"定义"或"配置"?
  • 我试图跳过第8步和第9步并直接尝试启动SLAPD,但是它总是失败,如果SLAPD能够在没有我自己的情况下自行启动并导入我自己的配置数据库吗?

谢谢EJP对我的耐心,我知道我错过了一些非常微不足道的东西,但相信我,我已经在互联网上挖了几天(和书店一天)没有找到明确的答案。如果你可以通过回答我的问题或者你自己的解释向我澄清一些概念,或者只提供一个我可以做slapadd的虚拟ldif文件然后我可以弄清楚什么是错误的,那真的很棒。

我将我的困难归咎于我认为做得不好的openldap指导文档:

  • 他们已经声明slapd.d是新的方法,但是编译后的源代码生成不生成slapd.d /目录,也没有在./configure中找到切换到这样的选项
  • bdb和hdb似乎逐渐淡出并被mdb取代,但是./configure默认启用了这两个,需要一些额外的libdb-devel包来正确制作它们(我使用的是Centos 7)。
  • 示例安装文件slapd.conf slapd.ldif所需的子目录(直到今天我都不知道它们是示例文件还是工作文件)不是通过make install设置的,甚至是/ var / openldap-数据
  • 即使是快速入门指南所需的子目录也不是由make install script
  • 创建的
  • 我不确定这是否应该是正确的,但我相信SLAPD至少应该发货#34;开箱即用"后续配置应由ldapmodify / add / del命令发出。

3 个答案:

答案 0 :(得分:0)

原来这个答案解决了问题Openldap naming context issue with Apache directory studio?

我想我很欣赏人们可以回答我的问题的某些细节或提供一个答案的例子。并非所有人都通过措辞解释来学习,有些人通过实例和逆向工程学习。阅读手册,只有在你不理解时才提出问题,我认为这是一个先前的陈述,而且大多数人在实际提出任何问题之前已经过了那个阶段。

是的,我想我应该在serverfault上询问,因为stackoverflow更适合编程。

答案 1 :(得分:0)

当我遇到同样的错误时,我没有弄清楚为什么slapadd命令失败了。但是,如果你想要的是让你的LDAP服务器工作,我可以分享我所做的。

第1步:直接在slapd.conf文件中配置MDB。

安装OpenLDAP时,已创建/ usr / local / etc / openldap下的slapd.conf文件,并使用MDB数据库进行配置。您可以根据需要更改MDB设置。这是默认设置:

#######################################################################
# MDB database definitions
#######################################################################

database    mdb
maxsize     1073741824
suffix      "dc=my-domain,dc=com"
rootdn      "cn=Manager,dc=my-domain,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw      secret
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory   /usr/local/var/openldap-data
# Indices to maintain
index   objectClass eq

第2步:配置后启动slapd。 命令启动slapd:

/usr/local/libexec/slapd -d 1

如果您看到" slapd开始",则表示slapd已启动。

第3步:创建数据库条目。

您可以参考OpenLDAP Administrator guide中提供的流程:

  

1.创建一个entries.ldif文件,如下所示:

    # Organization for Example Corporation
    dn: dc=example,dc=com
    objectClass: dcObject
    objectClass: organization
    dc: example
    o: Example Corporation
    description: The Example Corporation

    # Organizational Role for Directory Manager
    dn: cn=Manager,dc=example,dc=com
    objectClass: organizationalRole
    cn: Manager
    description: Directory Manager
  

2.使用ldapadd工具创建条目:

ldapadd -f entries.ldif -x -D "cn=Manager,dc=example,dc=com" -w secret

完成上面的3个步骤后,LDAP服务器就可以使用了。您可以添加DIT供您使用。

仅供参考,一个优秀的GUI客户端可以为您提供很多帮助。我使用了Jarek Gawor’s excellent LDAP Browser/Editor v2.8.2

希望这个答案可以帮助你或其他人。

答案 2 :(得分:-1)

您应该将默认的slapd.conf转换为新的slapd.d目录格式。在slapd.conf中添加配置数据库定义:

# before the first database definition
database config
# NOTE: the suffix is hardcoded as cn=config and 
# MUST not have a suffix directive
# normal rules apply - rootdn can be anything you want
# but MUST be under cn=config
rootdn "cn=admin,cn=config"
# use any of the supported password formats e.g. {SSHA} etc
# or plaintext as shown
rootpw config

然后使用

转换它
slaptest -f /usr/local/etc/openldap/slapd.conf -F /usr/local/etc/openldap/slapd.d

然后删除slapd.conf。然后,您可以使用slapadd继续配置。请查看Configuration Guidehttp://www.zytrax.com/books/ldap/ch6/slapd-config.html

希望这会对你有所帮助。