条目,也叫记录项,是LDAP中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的。
dn:每一个条目都有一个唯一的标识名(distinguished Name ,DN)。例如dn:"cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org"
。通过DN的层次型语法结构,可以方便地表示出条目在LDAP树中的位置,通常用于检索。
rdn:一般指dn第一个逗号最左边的部分,如在"cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org"
中cn=baby。
rootdn:管理员用户【特指管理LDAP中信息的最高权限用户】
rootpw:管理员密码
Base DN:LDAP目录树的最顶部就是根,也就是所谓的“Base DN”,如"dc=mydomain,dc=org"
属性 别名 语法 描述 值(举例)
commonName cn Directory String 姓名 sean
surname sn Directory String 姓 Chow
organizationalUnitName ou Directory String 单位(部门)名称 IT_SECTION
organization o Directory String 组织(公司)名称 example
telephoneNumber Telephone Number 电话号码 110
objectClass 内置属性 organizationalPerson
对象类是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类。通过对象类可以方便的定义条目类型。每个条目可以直接继承多个对象类,这样就继承了各种属性。
vi newEntry.ldif
dn: ou=bi,dc=enmonster,dc=storage
changetype: add
objectclass: top
objectclass: organizationUnit
ou: bi
dn: cn=littlelawson,ou=bi,dc=enmonster,dc=storage
changetype: add
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: littlelawson
sn: little
ou: bi
description: sb, sx
description: sx
uid: pminsky
[root@cdh202 data]# ldapmodify -xWD ‘cn=admin,dc=enmonster,dc=storage’ -f newEntry.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
[root@cdh202 openldap]# cat slapd.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
#checkpoint 1024 5
#cachesize 10000
suffix "dc=enmonster,dc=storage"
rootdn "cn=Manager,dc=enmonster,dc=storage"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}Ucv/BWkr4+3zw1yNu4n9KnxvM3Fr/L8W
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd/tools. Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain
index objectClass eq
对slapd.conf文件的说明:
[root@cdh202 data]# cat base.ldif
dn:dc=enmonster,dc=storage
objectClass:dcObject
objectClass:organization
dc:enmonster
o:Enmonster,Storage.
dn:cn=Manager,dc=enmonster,dc=storage
objectClass:organizationRole
cn:Manager
1)LDAP只是一个协议,它没有涉及到如何存储这些信息,因此还需要一个后端数据库组件来实现。这些后端可以是bdb(BerkeleyDB)、ldbm、shell和passwd等。
2)LDAP目录以树状的层次结构来存储数据(这很类似DNS),最顶层即根部称作“基准DN”,形如”dc=mydomain,dc=org”或者”o=mydomain.org”,前一种方式更为灵活也是Windows AD中使用的方式。在根目录的下面有很多的文件和目录,为了把这些大量的数据从逻辑上分开,LDAP像其它的目录服务协议一样使用OU(Organization Unit),可以用来表示公司内部机构,如部门等,也可以用来表示设备、人员等。同时OU还可以有子OU,用来表示更为细致的分类。
dn: dc=uca,dc=ma
objectClass: top
objectClass: organization
objectClass: dcObject
dc: uca
o: an organization name (mandatory with 'organization' objectClass)
这里的属性o是organization这个对象类所必须的。mandatory
:强制的。
#!ERROR [LDAP :error code 80 - index generation failed]
这个错误好像与slapd.conf文件中的index objectClass eq有关,所以将这个注释掉之后,便没有此错误。