安装就不说了,从配置开始说起
1.主要配置文件slapd.conf
内容包括三类:global, backend specific, and database specific。指全局设置,后台服务器的设置,数据库的设置。
全局的设置可以被另外两个的设置覆盖。后台服务器设置可以被数据库的设置覆盖。数据库设置可能是多个。
1.1全局设置
1.1.1 授权
#给不同的用户不同的权限,相当于数据库中的角色,权限一块
access to [ by ]+
完整的语法是:
olcAccess:
::= to
[by ]+
::= |
[dn[.]= | dn.=]
[filter=] [attrs=]
::= regex | exact
::= base | one | subtree | children
::= [val[.]=] | ,
::= | entry | children
::= | [anonymous | users | self
| dn[.]= | dn.=]
[dnattr=]
[group[/[/][.]]=]
[peername[.]=]
[sockname[.]=]
[domain[.]=]
[sockurl[.]=]
[set=]
[aci=]
::= [self]{|}
::= none | auth | compare | search | read | write
::= {=|+|-}{w|r|s|c|x|0}+
::= [stop | continue | break]
1.1.1.1 what
####################################################################
几种写法:
》》to 所有目录,这和dn=.写法是相同的
》》to dn[.]= 用正则表达式来匹配,basic-style不明白是什么意思
》》to dn.= scope可以是base, one, subtree, or children,
base就是要匹配目录是一样的,one匹配目标父亲目录是这里定义的DN。subtree匹配所有以这里定义的DN为root的子树。
children和subtree类似,只是少了和定义的DN相同的目录本身。
如:
0: o=suffix
1: cn=Manager,o=suffix
2: ou=people,o=suffix
3: uid=kdz,ou=people,o=suffix
4: cn=addresses,uid=kdz,ou=people,o=suffix
5: uid=hyc,ou=people,o=suffix
Then:
dn.base="ou=people,o=suffix" match 2;
dn.one="ou=people,o=suffix" match 3, and 5;
dn.subtree="ou=people,o=suffix" match 2, 3, 4, and 5; and
dn.children="ou=people,o=suffix" match 3, 4, and 5.
》》to filter=
to dn.one="ou=people,o=suffix" filter=(objectClass=person)这两种作用是相同的
在what中还可以加对attribute的限制
attrs=
注意如果要增加、删除一个目录,需要有写该目录的attribute权限,同时还要有写该目录的父目录的children属性的权限。
1.1.1.2 who
Specifier Entities
- All, including anonymous and authenticated users
anonymous Anonymous (non-authenticated) users
users Authenticated users
self User associated with target entry
dn[.]= Users matching a regular expression
dn.= Users within scope of a DN
1.1.1.3 accesslevel
Level Privileges Description
none =0 no access
auth =x needed to bind
compare =cx needed to compare
search =scx needed to apply search filters
read =rscx needed to read search results
write =wrscx needed to modify/rename
每个级别的权限都包含了它所有以下级别的权限的
1.1.1.4 control
stop | continue | break
1.1.1.5 例子
olcAccess: to by self write
by anonymous auth
by read
olcAccess: to dn.subtree="dc=example,dc=com" attr=homePhone
by self write
by dn.children=dc=example,dc=com" search
by peername.regex=IP:10..+ read
olcAccess: to dn.subtree="dc=example,dc=com"
by self write
by dn.children="dc=example,dc=com" search
by anonymous auth
####################################################################
1.1.2
无
1.1.3 idletimeout
以秒为单位,如果idle就强制断开client链接,默认是0,则关闭这个功能。
1.1.4 include
#如果需要包含其他文件,这个要小心使用,注意嵌套include
在openldap的安装目录中的schema目录中可以看到以下几个安装后自带的文件,不要去修改,如果要自定义属性类型,
自己创建文件,并在slapd.conf文件中include进来就可以了。
File Description
core.schema OpenLDAP core (required)
cosine.schema Cosine and Internet X.500 (useful)
inetorgperson.schema InetOrgPerson (useful)
misc.schema Assorted (experimental)
nis.schema Network Information Services (FYI)
openldap.schema OpenLDAP Project (experimental)
1.1.5 loglevel
#LDAP记录日志的级别
####################################################################
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
####################################################################
1.1.6 objectclass
定义一个对象类,略。
1.1.7 referral
如果slapd没办法找到数据库的时候转到URI
1.1.8 sizelimit
设置一次search最多返回的entries数
1.1.9 timelimit
以秒为单位,设置一次查询最多等待多少秒,超过时间,则返回,并表示超时。
1.2 backend设置
backend
type的全部类型包括
Types Description
bdb Berkeley DB transactional backend
dn***v DNS SRV backend
hdb Hierarchical variant of bdb backend
ldap Lightweight Directory Access Protocol (Proxy) backend
ldbm Lightweight DBM backend
meta Meta Directory backend
monitor Monitor backend
passwd Provides read-only access to passwd(5)
perl Perl Programmable backend
shell Shell (extern program) backend
sql SQL Programmable backend
1.3 General Database 设置
1.3.1 database
这里的type和backend是相同的
1.3.2 readonly { on | off }
1.3.3 replica
设置复制数据库所在位置
replica uri=ldap[s]://[:] | host=[:]
[bindmethod={simple|sasl}]
["binddn="]
[saslmech=]
[authcid=]
[authzid=]
[credentials=]
如果port没有写,是LDAP port默认的389 or 636。
slurpd负责复制数据库
1.3.4 replogfile
如果有设置复制数据库,这里设置日志文件,slapd要记录数据库的改变。这个日志文件由slapd负责写,由slurpd读。
如果没有设置复制数据库,slurpd没有启动,也可以用这个文件来记录事务日志。
1.3.5 suffix
#设置目录后缀,还可以加更多的dc,如"dc=eng,dc=uni,dc=edu,dc=eu"
suffix "dc=example,dc=com"
1.3.6 rootdn
#设置目录管理员
rootdn "cn=Manager,dc=example,dc=com"
1.3.7 rootpw
rootpw secret
如果你不想把密码明文地写在这里,可以
rootpw {SSHA}ZKKuqbEKJfKSXhUbHG3fG8MDn9j1v4QN
格式是按RFC 2307 form,可以用命令slappasswd产生,如:slappasswd -s password
1.3.8 syncrepl复制引擎
说明此数据库是备份数据库,基于LDAP Content Synchronization protocol与主数据库同步的。
syncrepl rid= 长度不能超过3位
provider=ldap[s]://[:port] 表明其主数据库地址
[type=refreshOnly|refreshAndPersist]
[interval=dd:hh:mm:ss]
[retry=[
转载于:https://blog.51cto.com/13791715/2310360