原文地址:https://help.ubuntu.com/community/OpenLDAPServer
OpenLDAP介绍:
LDAP是轻量级目录访问协议,是X500协议的简化版。更多 介绍请查看on Wikipedia。
为了方便介绍,所有的信息将储存在目录树中。你可以根据自己的需求更改目录树。(the Directory Information Tree: the DIT)。我们将在这个基础树上开始两个节点。
(1)People节点储存用户信息
(2)Groups节点储存用户组
你可以自己设计你的LDAP根。默认的,将以你的域名作为目录的根。如果你的域名是example.com,那么你的根为dc=example,dc=com
安装OpenLDAP:
首先需要安装ldap服务的守护进程,slapd,需要安装下面的包:slapd和ldap-utils(如何文件安装)
安装时提示输入域名,输入目录管理员密码。
编辑/etc/ldap/slapd.conf文件,对默认设置只需几个改动:输入root密码,注意不要使用明文,需要使用slappasswd生成一个密码:
$ slappasswd New password: Re-enter password: {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m
上面的例子使用的是 secret 作为密码(By nature of the SSHA encryption scheme, your result will vary.)。
继续编辑/etc/ldap/slapd.conf,复制粘贴下面的代码:
#确定你的编辑和添加是在 第一个 “database” 中进行的。(the first 'database' directive,原文中有英文提示)
suffix "dc=example,dc=com" directory "/var/lib/ldap" rootdn "cn=admin,dc=example,dc=com" rootpw {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m
LDAP数据
ldap目录在安装时已经创建,现在我们将里面填入数据。我们填入的是典型的实例。所谓典型就是能和目录兼容,和典型帐户兼容(web应用),和unix兼容(posix)。
The directory has been created at the installation, now it is time to populate. It will be populated with a "classical" entry that will be compatible with directory (for example for a shared directory), with classical accounts (for a web application) and with Unix accounts (posix).
LDAP可以用ldif文件装载数据(ldif : ldap directory interchange format)。下面我们创建一个ldif文件:
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organizationalUnit
dc: example
ou: Example Dot Com
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
dn: uid=lionel,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: lionel
sn: Porcheron
givenName: Lionel
cn: Lionel Porcheron
displayName: Lionel Porcheron
uidNumber: 1000
gidNumber: 10000
userPassword:
gecos: Lionel Porcheron
loginShell: /bin/bash
homeDirectory: /home/lionel
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: [email protected]
postalCode: 31000
l: Toulouse
o: Example
mobile: +33 (0)6 xx xx xx xx
homePhone: +33 (0)5 xx xx xx xx
title: System Administrator
postalAddress:
initials: LP
dn: cn=example,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: example gidNumber: 10000
在上面的例子中,user,group结构已经创建,在其他的例子中,你可能看到条目中添加的objectClass: top,他起到一个默认的作用,所以你不必特别的制定。你可以使用md5或者CRYPT hashing scheme生成密码,看一下上面和man slappasswd。
安装:
(1)停止ldap守护进程:sudo /etc/init.d/slapd stop
(2)删除安装时自动添加的内容:sudo rm -rf /var/lib/ldap/*
(3)添加sudo slapadd -l init.ldif
(4)修改数据库的权限 sudo chown -R openldap:openldap /var/lib/ldap
(5)启动ldap守护进程:sudo /etc/init.d/slapd start
另一种方法:
(1)重新配置你的ldap:sudo dpkg-reconfigure slapd
(2)启动ldap守护进程:sudo /etc/init.d/slapd start
(3)加载初始数据:sudo ldapadd -x -W -c -D "cn=admin,dc=kemuri,dc=net" -f init.ldif
我们可以使用ldap-utils工具检查我们是否将信息正确的添加到ldap中,执行查找:
$ ldapsearch -xLLL -b "dc=example,dc=com" uid=lionel sn givenName cn dn: uid=lionel,ou=people,dc=example,dc=com cn: Lionel Porcheron sn: Porcheron givenName: Lionel
参数说明:
(1)-x,我们不使用sasl身份验证(默认使用)
(2)-LLL禁用ldif信息打印
使用你的LDAP服务
(1)用户验证(查看LDAPClientAuthentication文档的说明)
(2)web应用中的用户验证
(3)为你的邮件系统提供地址服务
当然,ldap的用处还有很多。
ACL安装
Authentication requires access to password field, that should be not accessible by default. Another issue is that during password change using passwd shadowLastChange needs to be accessible as well. Following code shows example ACL setting that permits access to shadowLastChange:
access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
通常在安装OpenLDAP的时候,会在slapd.conf中安装一份正确的ACL设置。
LDAP replication
在信息系统中,LDAP服务经常会成为重要的服务。身份验证,授权,邮件系统,这些都会依赖ldap服务。这样建立一个附属系统成为了必要。下面是一个简单的配置介绍
介绍
OpenLDAP2.2的replication 的基础是主-从关系:
(1)通知master 服务的守护进程
(2)重新配置master服务的slapd.conf文件,设置一个slave 服务
(3)导出master服务的数据
(4)配置replica 的slapd.conf
(5)将master服务的数据导入到slave服务中
(6)重启/启动replica 服务的进程
(7)重启/启动master 服务的进程
注意:You will have to remember that modifications should ALWAYS be done on the master ! If you modifies the slave, modifications will get lost.
LDAP Master
master服务中,你需要修改/etc/ldap/slapd.conf中的database部分。下面的例子说明一个ldap-2.example.com 上的replica,用户是Manager,密码是secrect。The replication logfile is the place modifications are stored before they are send to the LDAP slave.
replica uri=ldap://ldap-2.example.com:389 binddn="cn=Manager,dc=example,dc=com" bindmethod=simple credentials=secret replogfile /var/lib/ldap/replog
使用slapcat导出master中的数据。然后使用scp 或其他的工具将master.ldif拷贝到slave中。
user@master:~$ sudo slapcat -l master.ldif
LDAP Slave
On the slave, you have to authorize your master to update LDAP database.在你的/etc/ldap/slapd.conf中增加下面几行。
updatedn cn=Manager,dc=example,dc=com updateref ldap://ldap-1.example.com
使用slapadd导入master.ldif
user@slave:~$ sudo slapadd -c -l master.ldif
重启master服务
user@master:~$ sudo /etc/init.d/slapd start
重启slave服务
user@slave:~$ sudo /etc/init.d/slapd start
链接:
OpenLDAP website
LDAP HOWTO
http://luma.sourceforge.net/ 一个带简单界面的LDAP管理工具
译者:接触了太长时间的windows,这次开发是要完全在ubuntu上进行,所以很陌生,很多基本的操作都要请教高人。看这篇文档前,大家还是先认真看一下man 文档,和info文档。这是高人说的。
deyeb的开发已经进入到不记录笔记不行的地步了。所以初期的工作有很多的文案要记录,有文档要看。我的翻译仅供个人参考,但是在百度上,一些关键词排名较高,希望能为来看的朋友提供一点点帮助。
随着开发经验的完善,上面画横线的地方将被重新考虑并准确翻译。
这篇帖子值得看一下:http://bbs.chinaunix.net/viewthread.php?tid=413009