2023年6月21日发(作者:)

LDAP服务器

现在市场上有很多LDAP服务器,大多数都可以在linux上运行。本文将介绍openLDAP的使用。

我为什么选择openLDAP? 为什么你应该选择openLDAP?

* openLDAP是开放源码的

openLDAP的官方网站是。你可以下载其源代码包自己编译,或者看看你的linux发行版是否已经包含了该软件包。如果已经包含了就可以安装预先编译好的版本从而少花费些力气。

我已经成功地在SuSE6.x 和 RedHat6.x上测试过openLDAP。

构建LDAP目录

下面我们将介绍设置一个LDAP服务器的步骤。

步骤:

* 下载并安装openLDAP

* 配置 LDAP server

* 配置本地环境指向LDAP 安装

* 初始化LDAP 数据库

* 查询 LDAP

* 添加/修改 LDAP 条目

下载并安装openLDAP

正如前面所提到的,可以从下载源代码包并根据它的相关文档进行安装,或者安装预先编译好的包(包的安装或如何编译应用程序已经超出了本文讨论的范畴)。

配置LDAP服务器

在我们的例子中,我将为构建LDAP服务器。你可以用你喜欢的编辑器编辑和配置文件来更改名称等参数以适应你的具体需求。

在我的服务器上配置文件在/etc/openldap目录下,你的配置文件可能在/usr/local/etc/openldap或者别的地方,这要根据你的linux发行版本或者编译openldap的具体情况而定。

######### /etc/openldap/ ###################################

# 下面的部分是我的suse 6.4 linux 发行版本预先定义的

# 我们设置的部分在本文的第二和第三部分

include /etc/openldap/

include /etc/openldap/

schemacheck off

pidfile /var/run/

argsfile /var/run/

#######################################################################

# ldbm database definitions

#######################################################################

# 定义使用的数据库类型。 缺省是ldbm

database ldbm

# 后缀或者根. 这是你LDAP目录的顶节点

suffix "o="

# LDAP的dbs 保存的位置

directory /var/lib/ldap

# 目录管理员的区分名

rootdn "cn=Manager, o="

# 保存ldap目录管理员的明文密码是很糟糕的,但是我们将在刚刚开始使用ldap时这样做

rootpw secret

# 这就是所有的一切

编辑你的 /etc/openldap/配置文件

该文件位于ldap客户端(我们将使用同一计算机作为服务器和客户端,当然这可以在同一计算机或不同的计算机上)

通常诸如ldapdelete 、ldapadd等等的ldap客户端会读该文件的内容。

##########/etc/openldap/#########

# LDAP 的缺省设置

#

# 查看 (5) 可以获取更多的信息

# 本文件应该设置为对所有人可读

# 定义ldap服务器,可以用主机名或ip地址

host 127.0.0.1

# 定义我们要查询的目录的根

# 我们将要使用的顶节点,这不一定是目录的根,比如我们可以使用

# base = ou=users, o=

# 这时我们的一切查询都将从树根o=的分支开始

现在启动ldap服务器。

如果你使用SuSE预先编译好的openldap服务器,你可以通过下面的命令启动ldap服务

/etc/rc.d/ldap start

在RedHat,该命令为

/etc/rc.d/init.d/ldap start

如果你是使用缺省设置自己编译并安装的,你可以用/usr/local/libexec/slapd &启动ldap服务器。如果没有使用缺省设置,请找到slapd文件并运行它。

在新安装的LDAP服务器上添加数据

到现在为止,你的ldap服务器已经运行起来了,可以准备添加数据了。最标准的往ldap服务器中添加数据的方法是建立一个LDIF(LDAP目录交换格式)文件。你可以通过阅读man

ldif来获得更多关于ldif的信息。

简单说来,ldif是ldap条目的文本表示。这些条目是很好读懂的,并且可以在来自两个不同的厂家的LDAP服务器间交换数据,哪怕使用的是不同的数据库后台或者是运行在不同的操作系统上。

是的,还有其他方法。我对为什么不使用XML替代LDIF感到很惊讶。

就让我们一起来建立ldif文件,而不要感到任何的忙乱。一些应该记住的要点:

? ldif 文件中的每一记录/条目都应用一个空行分开

? 空格是很重要的,"Atif Ghaffar" 和"Atif Ghaffar " 是完全不同的

下面是一个ldif文件

dn: o=

o:

objectclass: top

objectclass: organization

dn: ou=editors, o=

ou: editors

objectclass: organizationalUnit

dn: uid=aghaffar, ou=editors, o=

uid: aghafar

cn: Atif Ghaffar

sn: Ghaffar

givenname: Atif

objectclass: person

userpassword: yIvSBWSuLs2N2

mailacceptinggeneralid: aghaffar@

ou: editors

dn: uid=mkempe, ou=editors, o=

uid: mkempe

cn: Magnus Kempe

sn: Kempe

givenname: Magnus

objectclass: person

userpassword: clearpass

mailacceptinggeneralid: mkempe@

maildrop: mkempe@

preferredlanguage: fr

ou: editors

下面我们将这些数据加入ldap目录。我们使用命令行程序ldapadd

ldapadd -D "cn=Manager, o=" -w secret < 该命令使用“cn=Manager, o=”作为管理员的区分名(dn),使用secret

作为密码,然后从文件中读取数据并写入ldap目录。

如果一切正常的话你可以准备开始查询你的ldap目录了,否则如果其间出了差错的话,

你或许可以准备往我的邮箱灌水了;)

为我的邮件服务器考虑,我希望一切正常。

在继续之前,让我们一行一行的来检查一下这个ldif文件。

1. 这一行定义顶级记录的区分名(dn),这将是目录树的根,这是必须定义的。

2. 这一行我们定义组织(o),并赋值为“”。

3. 这一行定义这个对象的对象类,我们定义为top。

4. 定义对象的类型(这里是组织对象)。

5. 空行为分割符。

6. 定义组editors(这是linuxfocus editors分支),举一反三,我们也可以根据不同的目的来定义其他的分支,比如hosts和data分支。

7. 明确定义组织单元(ou)editors的属性。属性是可以被用来查询的条目,比如,如果你想要查询所有属于editors的用户,你可以这样查询“show all dn where ou=editors”。如果我们没有定义属性,则这条记录将不符合查询条件。

8. 定义对象类(组织单元)。

9. 空行为分割符。

10. 定义属于组editors的用户aghaffar的区分名。

11. 定义该用户的uid(要保证其是唯一的)。

12. 定义该用户的cn(普通名字),比如,我喜欢将我的名字写成“Firstname Lastname”,而有的人可能喜欢“Lastname Firstname”.

13. 姓

14. 名

15. 对象类(人)

16. 用户密码(这里是加密的密码)。这串字符表示密码是用加密算法加密过的。剩下的部分是用“yI”加密的密码"yIvSBWSuLs2N"。

17. 定义我的邮件地址。

18. 定义我所属于的组织单元(组editors)

19. 空行为分割符。

20. 定义另一个用户mkempe

21. 普通名字

22. 姓

23. 名

24. 对象类

25. 用户密码:注意这里我们使用明文密码。你可以为不同的用户使用不同的方案。这是根据每一条目定义的,而不是基于数据库定义的。因此一个用户可能使用明文密码,第二个可能使用加密密码,另一个则可能使用SHA认证方式。

26. 邮件地址。

27. maildrop:定义用户邮箱的真实位置。在这个例子中,这个服务器接受收件人为mkempe@的邮件,然后邮件服务器会查询ldap服务器“有接受收件人为mkempe@的邮箱吗?”ldap服务器就会返回maildrop属性值。接着邮件服务器就会将该邮件发给那个邮箱。

28. 母语:这是我们一个额外的属性,这个属性定义了用户的母语。我们可以利用存储在中央ldap服务器的信息来为改用户提供更好的服务。比如,直接向该用户显示本页的法语版本。请注意前面一条记录没有母语、maildrop等属性,这也是ldap强大的一个方面――不必象一个数据库中的表格那样拥有固定的结构。你可以在一条记录中定义3条属性,而在另一个中定义30条属性。

29. 组织单元。

查询ldap数据库

让我们找出关于用户mkempe的所有数据

ldapsearch uid=mkempe

找出editors的所有区分名

ldapsearch (&(objectclass=person)(ou=editors)) dn

更多的例子可以参考ldapsearch的man手册。

LDAP的好处

让我们来看一看迁移到LDAP所带来的好处。

LDAP是一个开放的标准。你将使用的大多数的新的应用程序都能够查询ldap数据库,甚至windows2000使用LDAP作为他的目录服务。信息的集中化将会带来巨大的利益,单点管理,减少错误,减少数据复制等等。

LDAP应用实例

如果我是康柏公司的推销员,我可以测试向你销售LDAP并告诉你可以用它来作为“联系人管理”,但是我不受雇于康柏公司,所以我会尝试向你介绍LDAP有趣的一些方面。

同一登录系统的单一数据源

用户帐号放置在一个集中的地方。

你可能会使用一个LDAP目录来管理你的用户,放置用户的密码及其他信息,而不仅仅是存放在/et/passwd文件中。Windows/Unix/Mac用户都可以使用这些信息。

建议:你可以使用LDAP信息来进行用户认证,而不是用shadow或nis等等方式。

建议:你可以写一个小web程序来让用户不用登录到系统就可以更改他的存放在LDAP中的unix密码。这时你将需要使用pam_ldap, 可以参考资源列表中关于pam_ldap的url.

注意:

统一登录系统的单一数据源!=同一登录系统

大多数LDAP销售商在向你销售LDAP时,会告诉你如果你使用LDAP,你就可以拥有一个同一登录系统解决方案。其实这只说对了一半。同一登录系统并不是什么新玩艺,只不过时IT经理的噱头而已。

同一登录系统的实例:

* 你用"aghaffar"登录工作站

* 你访问公司的内部网,内部网中的web页面是密码保护的,你不用登录就可以访问,因为www服务器可以识别你的身份。

* 你开始运行一个程序,比如SAP, 再一次地,你不需要密码,因为系统已经拥有了你的身份和信息。

* 等等等等

当然你可以使用LDAP作为用户数据源,而在几个不同的应用程序间进行会话管理的小戏法就是所谓的“统一登录系统”了,要知道,这和LDAP是风马牛不相及的。

其实这可以用LDAP, NIS, NT域控制器帐号,数据库,平面文件实现的。 建议:你可能想要建立用户邮件帐号但是不想建立unxi帐号。没问题,我正在使用一个LDAP Postfix 邮件服务器 Cyrus IMAP/POP服务器的复合服务器来管理成千上万的用户,当然不用建立相应的系统帐号。

建议:你可能想要将不同应用程序的信息集中化。比如,将Netscape的首选项、书签等信息存入LDAP,并且用户可以将这些信息从一部计算机移动到另一部,从LDAP服务器下载他/她的信息。这个用户可以从Windows NT Netscape 迁移到Linux/Solaris/Macintosh

Netscape的同时还使用同样的用户信息(对不起,又提到了Microsoft,我知道这倒了你的胃口)。

情景:我憎恶老是在web和书面上填充我的个人信息。我不知道为什么人们老是想知道我的年龄、生日、办公室地址,即使已经告诉过他们。在我以前谋职的公司里,我们不得不建立庞大的表格,表格的信息75%都是一样的(姓名、主题、通信地址、楼层、管理员名字、部门)。

建议:比如,如果我的电话出故障了,我给你的唯一信息是“我的电话出故障了”。

采取以下的措施可以尽量减少用户的厌烦:

? 为用户提供问题提交表单

? 页面提供用户名/密码验证 (每个对话验证一次,下一次用户登录是能记住用户信息)

? 页面提供两个表单元素 1) 反映问题的文字框2)提交按钮

写文章:教/学

我希望这篇文章能对你有所帮助,或者让你的大脑充满了10。你看看,你并不是必须成为专家才能和大家共享你的知识。你不必成为一个教授,也不必成为一个教师才能写教程。每一点小小的知识都能帮助别人。

幸运的是,现在我看到越来越多的人在讨论linux, 我看到他们中的大多数人都在测试linux,在一些人进行了一段时间的同时一些人很快放弃了。这些人可能完全没有unix命令的使用经验和概念,然而他们却可能和遇到的问题斗争了一段时间。如果你精神饱满的面对遇到的问题,那么你可以成为最好的教师,如果你认为你没有任何的资料写文章来帮助linux社团,你可以自愿的将本文翻译成你的母语。

资源列表:

PAM LDAP Module

pam_ldap 模块为Solarish和linux工作站提供LDAP目录认证,以及更改其在目录中的密码。

openLDAP

OpenLDAP 项目是一个协作开发强健的、商业等级的、具有丰富特性的、并且是开放源码的LDAP应用程序和工具的项目。该项目由一个全世界志愿者组成的社团管理,该社团利用Internet来交流、计划和开发OpenLDAP 软件和文档。

Java based excellent LDAP Browser/Editor

LDAP 浏览器/编辑器提供用户友好界面LDAP目录编辑工具。由JFC (SwingSet) 和JNDI

类库写成。可以连接第二和第三版LDAP 服务器。

kldap

kldap 是一个KDE的LDAP客户端(浏览器) 。你可以象你熟悉的Novell Administrator那样浏览LDAP目录。

/3?query=ldap

Freshmeat 站点上大量的LDAP相关工具。 /abstracts/

IBM的LDAP实现手册。你可以在线浏览或购买。

ypldapd - nis 2 ldap gateway

Ypldapd 是一个网络信息服务(NIS) 服务器,它使用LDAP作为数据源。通过ypldapd,现存的NIS 客户可以透明地使用LDAP来查询用户、组和主机信息。企业可以充分地获得LDAP所带来的好处,比如扩展性等而不用升级客户端。

Introduction to the SLAPD and SLURPD Administrators Guide

必读的关于LDAP的教程。

An LDAP RaodMap & FAQ

一个关于LDAP和X.500目录服务的资源教程。

/~dirsvcs/ldap/

轻量目录访问协议。

****************** openldap安装日记(用LDAP验证LINUX用户) ******************

/software/download/ //LDAP下载

ftp:///pub/OpenLDAP/openldap-stable/

/java/?code=2461 //YALA管理工具

/yala/

/technology/software/products/berkeley-db/ //BerkeleyDB下载

/berkeley-db/

/berkeley-db/

/berkeley-db/

一、安装OpenSSL //系统自带版本

openssl version -a查看版本

OpenSSL 0.9.8b 04 May 2006

光盘安装包:5_

二、安装cyrus-sasl //系统自带 版本:2.1.22-4

service testsaslauthd start //启动

testsaslauthd -u root -p 123456 //测试验证

光盘安装包:

5_

三、安装BerkeleyDB

# tar zxvf 这二版本装的时候报错 估计是我没打补丁的原因

# cd db-4.2.52/build_unix

# ../dist/configure --prefix=/usr/local/BerkeleyDB

# make

# make install

echo /usr/local/BerkeleyDB/lib >> /etc/ 四、安装openldap

# tar zxvf

# cd openldap-2.4.11

# export LD_LIBRARY_PATH="/usr/lib:/usr/local/BerkeleyDB/lib"

# env CPPFLAGS="-I/usr/local/BerkeleyDB/include"

LDFLAGS="-L/usr/local/BerkeleyDB/lib" ./configure --

prefix=/usr/local/openldap --sysconfdir=/etc/openldap --enable-passwd

--enable-wrappers --disable-ipv6 --enable-spasswd --

enable-crypt --enable-modules --enable-accesslog=yes

# make depend

# make

# make test

# make install

# cp /usr/local/openldap/var/openldap-data/DB_e

/usr/local/openldap/var/openldap-data/DB_CONFIG

五、测试启动

/usr/local/openldap/libexec/slapd -d 256

六、启动

#/usr/local/openldap/libexec/slapd

netstat -tunlp |grep :389

七、查看能否正常查询

# /usr/local/openldap/bin/ldapsearch -x -b '' -s base '(objectclass=*)'

八、关闭

#kill -INT `cat /usr/local/openldap/var/run/`

九、主配置文件/etc/openldap/openldap/

/etc/openldap/

在配置文件/etc/openldap/中加入以下行:注意有依赖关系

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/ include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

loglevel 296

#日志信息会被记录到 syslogd LOG_LOCAL4 机制中。

==============================================================

还需要将下面的内容添加到 /etc/ 中,并让 syslogd 重新读取自己的配置文件:

/var/log/

==============================================================

access to attrs=shadowLastChange,userPassword

by self write

by * auth

access to *

by * read

#access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的 shadow 信息来反映密码的变化。希望身

份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期

问题。

配置ldap服务器的数据库:

修改文件/etc/openldap/的以下行:

database bdb

suffix "dc=my-domain,dc=com"

rootdn "cn=Manager,dc=my-domain,dc=com"

把my-domain改为你的“域名”,本文中并不需要真正的域名,只是ldap的一个容器,但为了ldap的其他服务,建议用你的真实域名。

这里定义了ldap的数据库和管理者。

这里还需要一个管理员密码,加入下面这行(密码123456):

rootpw {MD5}4QrcOUm6Wau+VuBX8g+IPg==

密码可以用slappasswd命令生成,slappasswd -h {MD5}

==============================================================

如果提示如下错误,安装包:

./slappasswd: error while loading shared libraries: : cannot

open shared object file: No such file or directory

============================================================== /download/ 从系统中生成ldap用户脚本工具

修改migrate_文件,我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:

$DEFAULT_BASE = "dc=my-domain,dc=com"

然后执行:

migrate_ >

这是创建根项,并为 Hosts、Networks、Group 和 People 等创建第一级的组织单元(OU)

编辑 全局设置

如果不包含这个文件 (因为里面有objectclass信息)第一段无法使用

==========================================================

dn:dc=my-domain,dc=com

dc:my-domain

objectClass:top

objectClass:domain

dn: ou=People,dc=my-domain,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

dn: ou=Group,dc=my-domain,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

==========================================================

ldapadd -x -D 'cn=manager,dc=my-domain,dc=com' -W 直接输入按ctrl+D保存 或者-f 指定文件

ldapadd -x -D 'cn=manager,dc=my-domain,dc=com' -W -f

-x表示用简单验证,-D表示指定目录,-W表示弹出密码输入提示

==========================================================

不包含这个文件时 以下也可以使用 objectclass

dn: dc=my-domain,dc=com

objectClass: dcObject

objectClass: organization

dc: my-domain

o: Corporation description: d Corporation

==========================================================

ldapsearch -x -b 'dc=my-domain,dc=com' 查看刚才输入信息

ldapdelete -x -D 'cn=manager,dc=my-domain,dc=com' -W

'ou=People,dc=my-domain,dc=com' 删除

ldapdelete -x -D 'cn=manager,dc=my-domain,dc=com' -W

'ou=group,dc=my-domain,dc=com'

ldapdelete -x -D 'cn=manager,dc=my-domain,dc=com' -W

'dc=my-domain,dc=com'

设置使用者密码,当然了,你的用户需要有userPassword项了。

ldappasswd -x -D "cn=manager,dc=my-doamin,dc=com" -W

"uid=aaa,ou=People,dc=my-domain,dc=com" -S

从Linux系统中导出用户和组至LDAP中

执行:

grep ldapuser /etc/group >

./migrate_ >

导出ldapuser组的信息,以同样方式到处其他组的信息

执行:

grep ldapuser /etc/passwd >

./migrate_ >

可以复制passwd文件为后将中系统自带的用户删除后作为脚本的输入参数,这样可以一次转换所有用户。不建议将系

统自带用户导入ldap,这样做的好处是万一在ldap认证出现问题的情况下不至于连root账户也不能登录。

设置了系统使用LDAP验证后如果服务未启动除root外其它用户登录不了。

做完账户信息转换后即可以导入ldap数据了,执行:

ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f

ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f

ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f

这里的和对应的你的组信息和用户信息的文件,注必须最先导入。

==========================================================

实例,脚本从系统/etc/group生成

==========================================================

dn: cn=aaa,ou=Group,dc=my-domain,dc=com

objectClass: posixGroup objectClass: top

cn: aaa

userPassword: {crypt}x

gidNumber: 510

==========================================================

实例脚本从系统/etc/passwd生成

==========================================================

dn: uid=aaa,ou=People,dc=my-domain,dc=com

uid: aaa

cn: aaa

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword: {crypt}$1$FKJV./b1$qtShlwZse5aLjjbsEN2xE/

shadowLastChange: 14355

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 510

gidNumber: 510

homeDirectory: /home/aaa

==========================================================

客户端:

一、setup 设置然后选择"Authentication Configuratio"

#设置后不能用useradd了?

把以下选项选上:

Use LDAP

Use MD5 Passwords

Use Shadow Passwords

Use LDAP Authentication

Local authorization is sufficient(如果有此项)

选择下一步:

请勿选择使用TLS!

输入ldap服务器地址或主机名,若有一台以上ldap服务器则用空格隔开。

输入base dn:dc=my-domain,dc=com(参考文件)

将passwd、shadow、以及group文件备份后清除已经导入的用户信息,再用id命令测试一下,确认用户信息正确。

二、或者修改以下二个文件 vi /etc/sysconfig/authconfig

USELDAP=yes

USELDAPAUTH=yes

USEMD5=yes

USESHADOW=yes

USELOCAUTHORIZE=yes

vi /etc/openldap/

URI ldap://127.0.0.1/

BASE dc=my-domain,dc=com

TLS_CACERTDIR /etc/openldap/cacerts

==========================================================

./configure出现错误:could not locate libtool ltdl.h 安装包

安装包 否则提示找不到cyrus sasl

====================================================================

README安装说明

% tar xfz

% cd openldap-VERSION

% ./configure --help

Variable Description Example

CC C compiler gcc

CFLAGS C flags -O -g

CPPFLAGS cpp flags -I/path/include -DFOO=42

LDFLAGS ld flags -L/usr/local/lib

LIBS libraries -llib

PATH command path /usr/local/bin:/usr/bin:/bin

% [env settings] ./configure [options]

% make depend

% make

% make test

% su root -c 'make install'

client defaults

Standalone LDAP daemon

schema/*.schema Schema Definitions

====================================================================

openldap的安装

2004-04-23 15:18 pm

来自:Linux文档

现载:

地址:无名

1、获得软件

/software/download/

/software/

2、解压

gunzip -c | tar xfB -

在当前工作目录下将产生一个ldap子目录。

3、认真阅读README和INSTALL

4、运行configure

./configure

查看configure的可选项

./configure --help

5、编译

make depend

make

6、测试编译结果

cd tests

make

cd ..

7、安装软件

su root -c make install

8、创建SLAPD的配置文件

编辑/usr/local/etc/文件,该文件中包含下列格式的LDBM数据库定义

database ldbm

suffix "dc=MY-DOMAIN, dc=COM"

rootdn "cn=Manager, dc=MY-DOMAIN, dc=COM"

rootpw secret

替换上面的MY-DOMAIN和COM成实际的域名,例如:

database ldbm

suffix "dc=mydomain, dc=com"

rootdn "cn=Manager, dc=mydomain, dc=com"

rootpw secret

样本放置在/usr/local/etc/openldap/

9、启动SLAPD

su root -c /usr/local/libexec/slapd -f

slapd被安装在配置文件指定的"libexecdir"目录下,通常为/usr/local/libexec/slpad。

10、增加初始的入口(entries)

1) 创建LDIF文件

编辑一个LDIF格式文件:

dn: dc=MY-DOMAIN, dc=COM

dc: MY-DOMAIN

o: MY-ORGANIZATION

objectclass: organization

objectclass: dcObject

dn: cn=Manager, dc=MY-DOMAIN, dc=COM

cn: Manager

sn: Manager

objectclass: person

2) 运行ldapadd

ldapadd -D "cn=Manager, dc=MY-DOMAIN, dc=COM" -W <

11、检查是否已经开始正常工作

ldapsearch -L -b "dc=MY-DOMAIN, dc=COM" "(objectclass=*)"

例如:

ldapsearch -L -b "dc=mydomain, dc=com" -W "(objectclass=*)"

信息来源:/linux/

设置一个基本的OpenLDAP Server

2004-04-23 15:18 pm

来自:Linux文档

现载:

地址:无名

一. 目的

本文旨在介绍如何安装OpenLDAP并且设置一个公司内部的集中化的邮件地址薄服务器供客户端查询。

基本上,OpenLDAPg还应用在其它许多方面,象集中化的用户帐号验证服务器,但邮件地址薄查询是最常用的。

二. 安装

从下载最新的openldap软件包,按照编译和安装的步骤,依次运行:

#tar cvfz

#cd openldap-2.0.11

#./configure

#make depend

#make

#make test

#make install

我的操作环境是redhat 6.1,如果没有遇到任何错误,最后默认安装LDAP后台程序slapd到目录/usr/local/libexec;配置文件在目录/usr/local/etc/openldap/ 并且放各种OpenLDAP工具

ldapadd,ldapdelete,ldapmodify,ldapmodrdn,ldappasswd,ldapsearch在目录/usr/local/bin,运行时数据库在/usr/local/var/openldap-ldbm。

三. 设置

1) 更改配置文件/usr/local/etc/openldap/

在include /usr/local/etc/openldap/schema/这行后面加上下面的行,包括所有的方案。

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/ include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

2) 在文件的"ldbm database definitions"部分更改相应的suffix,rootdn行如下

database ldbm

suffix "o=yourdomain,c=us"

rootdn "cn=root,o=yourdomain,c=us"

rootpw secret

directory /usr/local/var/openldap-ldbm

有各种格式你可以用,这里我用的是o=yourdomain,c=us 说明你的公司域名和所在的国家或地区。

rootdn的格式安装后默认为cn=Manager,这里改为root完全是自己的喜好,这样符合Unix/Linux中root具有最高权限的传统。

3) 现在可以启动slapd了,运行/usr/local/libexec/slapd 。

可以考虑把/usr/local/bin and /usr/local/libexec加到搜索路径中,即加到/etc/profile

中的PATH行:

PATH="$PATH:/usr/X11R6/bin:/usr/local/bin:/usr/local/libexec"

这样下次登录后只需键入 slapd 。

4) 测试ldap server是否正常工作。

运行下面的命令检查是否有相应的输出。

#ldapsearch -x -b 'o=yourdomain,c=us' '(objectclass=*)'

陈绪先生注:有误,应该为

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

或者

ldapsearch -x -b '' -s base '(objectclass=*)'

5) 编辑.ldif文本文件,用ldapadd添加记录进入LDAP数据库。

文件内容如下:

dn: o=yourdomain,c=us

objectclass: dcobject

objectclass: organization

o: yourdomain

dc: yourdomain

dn: cn=Jephe Wu,o=yourdomain,c=us

objectclass: inetorgperson cn: Jephe Wu

sn: Wu

mail: jephe_wu@

......

依次类推,添加每个人的记录进入该文件中,注意对象类型 inetorgperson 至少必须要有cn和sn,这里我们用cn,sn,mail三项定义,这对我们的邮件地址薄功能来说已经足够。你还可以定义象mobile, 等等。

然后用下面的命令添加上面的.ldif文件进入LDAP数据库

#ldapadd -x -D "cn=root,o=yourdomain,c=us" -w secret -f "yourldiffilename"

注:上面的文件的第一部分"dn: o=yourdomain,c=us"是必须的,否则不能添加数据。

用你的公司的域名替换上面的"yourdomain"。

6) 设置Outlook Express, 允许用LDAP服务器查询邮件地址。

"工具/帐号/添加--目录服务",填入你的服务器的IP地址或者主机全称域名,在下一个屏幕中选yes以允许用目录服务来查询地址,最后在"目录服务"栏中选中刚才设置的项目击“属性/高级",在"搜索库"中填入"o=yourdomain,c=us"。

Netscape请根据上面的信息设置相应的选项。

四. 常见使用问题

1) 能启动slapd 没有问题,但不能添加数据库,运行ldapadd添加时出错 "ldap_bind:cannot

contact LDAP Server" 。

答: 最可能的原因是在/etc/hosts中没有127.0.0.1 localhost项目。

2) 注意查询顺序: 如果在Outlook Express的地址薄中有内容,则检查地址时地址薄优先,如果在本地地址薄中找不到相应记录,然后再查询LDAP服务器。

3) 用下面的命令确信客户端与LDAP服务器有通讯,在服务器运行下面的命令,然后在OE中测试检查地址,你将会得到查询LDAP数据库的连接过程的输出。

# tcpdump port 389

信息来源:/linux/

1、获得软件

/software/download/

/software/

2、解压

gunzip -c | tar xfB -

在当前工作目录下将产生一个ldap子目录。

3、认真阅读README和INSTALL

4、运行configure

./configure

查看configure的可选项

./configure --help

5、编译

make depend

make

6、测试编译结果

cd tests

make

cd ..

7、安装软件

su root -c make install

8、创建SLAPD的配置文件

编辑/usr/local/etc/文件,该文件中包含下列格式的LDBM数据库定义

database ldbm

suffix ""dc=MY-DOMAIN, dc=COM""

rootdn ""cn=Manager, dc=MY-DOMAIN, dc=COM""

rootpw secret

替换上面的MY-DOMAIN和COM成实际的域名,例如:

database ldbm

suffix ""dc=mydomain, dc=com""

rootdn ""cn=Manager, dc=mydomain, dc=com""

rootpw secret

样本放置在/usr/local/etc/openldap/

9、启动SLAPD

su root -c /usr/local/libexec/slapd -f

slapd被安装在配置文件指定的""libexecdir""目录下,通常为/usr/local/libexec/slpad。

10、增加初始的入口(entries)

1) 创建LDIF文件

编辑一个LDIF格式文件:

dn: dc=MY-DOMAIN, dc=COM

dc: MY-DOMAIN

o: MY-ORGANIZATION

objectclass: organization

objectclass: dcObject

dn: cn=Manager, dc=MY-DOMAIN, dc=COM

cn: Manager

sn: Manager

objectclass: person

2) 运行ldapadd

ldapadd -D ""cn=Manager, dc=MY-DOMAIN, dc=COM"" -W <

11、检查是否已经开始正常工作

ldapsearch -L -b ""dc=MY-DOMAIN, dc=COM"" ""(objectclass=*)""

例如:

ldapsearch -L -b ""dc=mydomain, dc=com"" -W ""(objectclass=*)""

信息来源:/linux/

2023年6月21日发(作者:)

LDAP服务器

现在市场上有很多LDAP服务器,大多数都可以在linux上运行。本文将介绍openLDAP的使用。

我为什么选择openLDAP? 为什么你应该选择openLDAP?

* openLDAP是开放源码的

openLDAP的官方网站是。你可以下载其源代码包自己编译,或者看看你的linux发行版是否已经包含了该软件包。如果已经包含了就可以安装预先编译好的版本从而少花费些力气。

我已经成功地在SuSE6.x 和 RedHat6.x上测试过openLDAP。

构建LDAP目录

下面我们将介绍设置一个LDAP服务器的步骤。

步骤:

* 下载并安装openLDAP

* 配置 LDAP server

* 配置本地环境指向LDAP 安装

* 初始化LDAP 数据库

* 查询 LDAP

* 添加/修改 LDAP 条目

下载并安装openLDAP

正如前面所提到的,可以从下载源代码包并根据它的相关文档进行安装,或者安装预先编译好的包(包的安装或如何编译应用程序已经超出了本文讨论的范畴)。

配置LDAP服务器

在我们的例子中,我将为构建LDAP服务器。你可以用你喜欢的编辑器编辑和配置文件来更改名称等参数以适应你的具体需求。

在我的服务器上配置文件在/etc/openldap目录下,你的配置文件可能在/usr/local/etc/openldap或者别的地方,这要根据你的linux发行版本或者编译openldap的具体情况而定。

######### /etc/openldap/ ###################################

# 下面的部分是我的suse 6.4 linux 发行版本预先定义的

# 我们设置的部分在本文的第二和第三部分

include /etc/openldap/

include /etc/openldap/

schemacheck off

pidfile /var/run/

argsfile /var/run/

#######################################################################

# ldbm database definitions

#######################################################################

# 定义使用的数据库类型。 缺省是ldbm

database ldbm

# 后缀或者根. 这是你LDAP目录的顶节点

suffix "o="

# LDAP的dbs 保存的位置

directory /var/lib/ldap

# 目录管理员的区分名

rootdn "cn=Manager, o="

# 保存ldap目录管理员的明文密码是很糟糕的,但是我们将在刚刚开始使用ldap时这样做

rootpw secret

# 这就是所有的一切

编辑你的 /etc/openldap/配置文件

该文件位于ldap客户端(我们将使用同一计算机作为服务器和客户端,当然这可以在同一计算机或不同的计算机上)

通常诸如ldapdelete 、ldapadd等等的ldap客户端会读该文件的内容。

##########/etc/openldap/#########

# LDAP 的缺省设置

#

# 查看 (5) 可以获取更多的信息

# 本文件应该设置为对所有人可读

# 定义ldap服务器,可以用主机名或ip地址

host 127.0.0.1

# 定义我们要查询的目录的根

# 我们将要使用的顶节点,这不一定是目录的根,比如我们可以使用

# base = ou=users, o=

# 这时我们的一切查询都将从树根o=的分支开始

现在启动ldap服务器。

如果你使用SuSE预先编译好的openldap服务器,你可以通过下面的命令启动ldap服务

/etc/rc.d/ldap start

在RedHat,该命令为

/etc/rc.d/init.d/ldap start

如果你是使用缺省设置自己编译并安装的,你可以用/usr/local/libexec/slapd &启动ldap服务器。如果没有使用缺省设置,请找到slapd文件并运行它。

在新安装的LDAP服务器上添加数据

到现在为止,你的ldap服务器已经运行起来了,可以准备添加数据了。最标准的往ldap服务器中添加数据的方法是建立一个LDIF(LDAP目录交换格式)文件。你可以通过阅读man

ldif来获得更多关于ldif的信息。

简单说来,ldif是ldap条目的文本表示。这些条目是很好读懂的,并且可以在来自两个不同的厂家的LDAP服务器间交换数据,哪怕使用的是不同的数据库后台或者是运行在不同的操作系统上。

是的,还有其他方法。我对为什么不使用XML替代LDIF感到很惊讶。

就让我们一起来建立ldif文件,而不要感到任何的忙乱。一些应该记住的要点:

? ldif 文件中的每一记录/条目都应用一个空行分开

? 空格是很重要的,"Atif Ghaffar" 和"Atif Ghaffar " 是完全不同的

下面是一个ldif文件

dn: o=

o:

objectclass: top

objectclass: organization

dn: ou=editors, o=

ou: editors

objectclass: organizationalUnit

dn: uid=aghaffar, ou=editors, o=

uid: aghafar

cn: Atif Ghaffar

sn: Ghaffar

givenname: Atif

objectclass: person

userpassword: yIvSBWSuLs2N2

mailacceptinggeneralid: aghaffar@

ou: editors

dn: uid=mkempe, ou=editors, o=

uid: mkempe

cn: Magnus Kempe

sn: Kempe

givenname: Magnus

objectclass: person

userpassword: clearpass

mailacceptinggeneralid: mkempe@

maildrop: mkempe@

preferredlanguage: fr

ou: editors

下面我们将这些数据加入ldap目录。我们使用命令行程序ldapadd

ldapadd -D "cn=Manager, o=" -w secret < 该命令使用“cn=Manager, o=”作为管理员的区分名(dn),使用secret

作为密码,然后从文件中读取数据并写入ldap目录。

如果一切正常的话你可以准备开始查询你的ldap目录了,否则如果其间出了差错的话,

你或许可以准备往我的邮箱灌水了;)

为我的邮件服务器考虑,我希望一切正常。

在继续之前,让我们一行一行的来检查一下这个ldif文件。

1. 这一行定义顶级记录的区分名(dn),这将是目录树的根,这是必须定义的。

2. 这一行我们定义组织(o),并赋值为“”。

3. 这一行定义这个对象的对象类,我们定义为top。

4. 定义对象的类型(这里是组织对象)。

5. 空行为分割符。

6. 定义组editors(这是linuxfocus editors分支),举一反三,我们也可以根据不同的目的来定义其他的分支,比如hosts和data分支。

7. 明确定义组织单元(ou)editors的属性。属性是可以被用来查询的条目,比如,如果你想要查询所有属于editors的用户,你可以这样查询“show all dn where ou=editors”。如果我们没有定义属性,则这条记录将不符合查询条件。

8. 定义对象类(组织单元)。

9. 空行为分割符。

10. 定义属于组editors的用户aghaffar的区分名。

11. 定义该用户的uid(要保证其是唯一的)。

12. 定义该用户的cn(普通名字),比如,我喜欢将我的名字写成“Firstname Lastname”,而有的人可能喜欢“Lastname Firstname”.

13. 姓

14. 名

15. 对象类(人)

16. 用户密码(这里是加密的密码)。这串字符表示密码是用加密算法加密过的。剩下的部分是用“yI”加密的密码"yIvSBWSuLs2N"。

17. 定义我的邮件地址。

18. 定义我所属于的组织单元(组editors)

19. 空行为分割符。

20. 定义另一个用户mkempe

21. 普通名字

22. 姓

23. 名

24. 对象类

25. 用户密码:注意这里我们使用明文密码。你可以为不同的用户使用不同的方案。这是根据每一条目定义的,而不是基于数据库定义的。因此一个用户可能使用明文密码,第二个可能使用加密密码,另一个则可能使用SHA认证方式。

26. 邮件地址。

27. maildrop:定义用户邮箱的真实位置。在这个例子中,这个服务器接受收件人为mkempe@的邮件,然后邮件服务器会查询ldap服务器“有接受收件人为mkempe@的邮箱吗?”ldap服务器就会返回maildrop属性值。接着邮件服务器就会将该邮件发给那个邮箱。

28. 母语:这是我们一个额外的属性,这个属性定义了用户的母语。我们可以利用存储在中央ldap服务器的信息来为改用户提供更好的服务。比如,直接向该用户显示本页的法语版本。请注意前面一条记录没有母语、maildrop等属性,这也是ldap强大的一个方面――不必象一个数据库中的表格那样拥有固定的结构。你可以在一条记录中定义3条属性,而在另一个中定义30条属性。

29. 组织单元。

查询ldap数据库

让我们找出关于用户mkempe的所有数据

ldapsearch uid=mkempe

找出editors的所有区分名

ldapsearch (&(objectclass=person)(ou=editors)) dn

更多的例子可以参考ldapsearch的man手册。

LDAP的好处

让我们来看一看迁移到LDAP所带来的好处。

LDAP是一个开放的标准。你将使用的大多数的新的应用程序都能够查询ldap数据库,甚至windows2000使用LDAP作为他的目录服务。信息的集中化将会带来巨大的利益,单点管理,减少错误,减少数据复制等等。

LDAP应用实例

如果我是康柏公司的推销员,我可以测试向你销售LDAP并告诉你可以用它来作为“联系人管理”,但是我不受雇于康柏公司,所以我会尝试向你介绍LDAP有趣的一些方面。

同一登录系统的单一数据源

用户帐号放置在一个集中的地方。

你可能会使用一个LDAP目录来管理你的用户,放置用户的密码及其他信息,而不仅仅是存放在/et/passwd文件中。Windows/Unix/Mac用户都可以使用这些信息。

建议:你可以使用LDAP信息来进行用户认证,而不是用shadow或nis等等方式。

建议:你可以写一个小web程序来让用户不用登录到系统就可以更改他的存放在LDAP中的unix密码。这时你将需要使用pam_ldap, 可以参考资源列表中关于pam_ldap的url.

注意:

统一登录系统的单一数据源!=同一登录系统

大多数LDAP销售商在向你销售LDAP时,会告诉你如果你使用LDAP,你就可以拥有一个同一登录系统解决方案。其实这只说对了一半。同一登录系统并不是什么新玩艺,只不过时IT经理的噱头而已。

同一登录系统的实例:

* 你用"aghaffar"登录工作站

* 你访问公司的内部网,内部网中的web页面是密码保护的,你不用登录就可以访问,因为www服务器可以识别你的身份。

* 你开始运行一个程序,比如SAP, 再一次地,你不需要密码,因为系统已经拥有了你的身份和信息。

* 等等等等

当然你可以使用LDAP作为用户数据源,而在几个不同的应用程序间进行会话管理的小戏法就是所谓的“统一登录系统”了,要知道,这和LDAP是风马牛不相及的。

其实这可以用LDAP, NIS, NT域控制器帐号,数据库,平面文件实现的。 建议:你可能想要建立用户邮件帐号但是不想建立unxi帐号。没问题,我正在使用一个LDAP Postfix 邮件服务器 Cyrus IMAP/POP服务器的复合服务器来管理成千上万的用户,当然不用建立相应的系统帐号。

建议:你可能想要将不同应用程序的信息集中化。比如,将Netscape的首选项、书签等信息存入LDAP,并且用户可以将这些信息从一部计算机移动到另一部,从LDAP服务器下载他/她的信息。这个用户可以从Windows NT Netscape 迁移到Linux/Solaris/Macintosh

Netscape的同时还使用同样的用户信息(对不起,又提到了Microsoft,我知道这倒了你的胃口)。

情景:我憎恶老是在web和书面上填充我的个人信息。我不知道为什么人们老是想知道我的年龄、生日、办公室地址,即使已经告诉过他们。在我以前谋职的公司里,我们不得不建立庞大的表格,表格的信息75%都是一样的(姓名、主题、通信地址、楼层、管理员名字、部门)。

建议:比如,如果我的电话出故障了,我给你的唯一信息是“我的电话出故障了”。

采取以下的措施可以尽量减少用户的厌烦:

? 为用户提供问题提交表单

? 页面提供用户名/密码验证 (每个对话验证一次,下一次用户登录是能记住用户信息)

? 页面提供两个表单元素 1) 反映问题的文字框2)提交按钮

写文章:教/学

我希望这篇文章能对你有所帮助,或者让你的大脑充满了10。你看看,你并不是必须成为专家才能和大家共享你的知识。你不必成为一个教授,也不必成为一个教师才能写教程。每一点小小的知识都能帮助别人。

幸运的是,现在我看到越来越多的人在讨论linux, 我看到他们中的大多数人都在测试linux,在一些人进行了一段时间的同时一些人很快放弃了。这些人可能完全没有unix命令的使用经验和概念,然而他们却可能和遇到的问题斗争了一段时间。如果你精神饱满的面对遇到的问题,那么你可以成为最好的教师,如果你认为你没有任何的资料写文章来帮助linux社团,你可以自愿的将本文翻译成你的母语。

资源列表:

PAM LDAP Module

pam_ldap 模块为Solarish和linux工作站提供LDAP目录认证,以及更改其在目录中的密码。

openLDAP

OpenLDAP 项目是一个协作开发强健的、商业等级的、具有丰富特性的、并且是开放源码的LDAP应用程序和工具的项目。该项目由一个全世界志愿者组成的社团管理,该社团利用Internet来交流、计划和开发OpenLDAP 软件和文档。

Java based excellent LDAP Browser/Editor

LDAP 浏览器/编辑器提供用户友好界面LDAP目录编辑工具。由JFC (SwingSet) 和JNDI

类库写成。可以连接第二和第三版LDAP 服务器。

kldap

kldap 是一个KDE的LDAP客户端(浏览器) 。你可以象你熟悉的Novell Administrator那样浏览LDAP目录。

/3?query=ldap

Freshmeat 站点上大量的LDAP相关工具。 /abstracts/

IBM的LDAP实现手册。你可以在线浏览或购买。

ypldapd - nis 2 ldap gateway

Ypldapd 是一个网络信息服务(NIS) 服务器,它使用LDAP作为数据源。通过ypldapd,现存的NIS 客户可以透明地使用LDAP来查询用户、组和主机信息。企业可以充分地获得LDAP所带来的好处,比如扩展性等而不用升级客户端。

Introduction to the SLAPD and SLURPD Administrators Guide

必读的关于LDAP的教程。

An LDAP RaodMap & FAQ

一个关于LDAP和X.500目录服务的资源教程。

/~dirsvcs/ldap/

轻量目录访问协议。

****************** openldap安装日记(用LDAP验证LINUX用户) ******************

/software/download/ //LDAP下载

ftp:///pub/OpenLDAP/openldap-stable/

/java/?code=2461 //YALA管理工具

/yala/

/technology/software/products/berkeley-db/ //BerkeleyDB下载

/berkeley-db/

/berkeley-db/

/berkeley-db/

一、安装OpenSSL //系统自带版本

openssl version -a查看版本

OpenSSL 0.9.8b 04 May 2006

光盘安装包:5_

二、安装cyrus-sasl //系统自带 版本:2.1.22-4

service testsaslauthd start //启动

testsaslauthd -u root -p 123456 //测试验证

光盘安装包:

5_

三、安装BerkeleyDB

# tar zxvf 这二版本装的时候报错 估计是我没打补丁的原因

# cd db-4.2.52/build_unix

# ../dist/configure --prefix=/usr/local/BerkeleyDB

# make

# make install

echo /usr/local/BerkeleyDB/lib >> /etc/ 四、安装openldap

# tar zxvf

# cd openldap-2.4.11

# export LD_LIBRARY_PATH="/usr/lib:/usr/local/BerkeleyDB/lib"

# env CPPFLAGS="-I/usr/local/BerkeleyDB/include"

LDFLAGS="-L/usr/local/BerkeleyDB/lib" ./configure --

prefix=/usr/local/openldap --sysconfdir=/etc/openldap --enable-passwd

--enable-wrappers --disable-ipv6 --enable-spasswd --

enable-crypt --enable-modules --enable-accesslog=yes

# make depend

# make

# make test

# make install

# cp /usr/local/openldap/var/openldap-data/DB_e

/usr/local/openldap/var/openldap-data/DB_CONFIG

五、测试启动

/usr/local/openldap/libexec/slapd -d 256

六、启动

#/usr/local/openldap/libexec/slapd

netstat -tunlp |grep :389

七、查看能否正常查询

# /usr/local/openldap/bin/ldapsearch -x -b '' -s base '(objectclass=*)'

八、关闭

#kill -INT `cat /usr/local/openldap/var/run/`

九、主配置文件/etc/openldap/openldap/

/etc/openldap/

在配置文件/etc/openldap/中加入以下行:注意有依赖关系

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/ include /etc/openldap/openldap/schema/

include /etc/openldap/openldap/schema/

loglevel 296

#日志信息会被记录到 syslogd LOG_LOCAL4 机制中。

==============================================================

还需要将下面的内容添加到 /etc/ 中,并让 syslogd 重新读取自己的配置文件:

/var/log/

==============================================================

access to attrs=shadowLastChange,userPassword

by self write

by * auth

access to *

by * read

#access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的 shadow 信息来反映密码的变化。希望身

份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期

问题。

配置ldap服务器的数据库:

修改文件/etc/openldap/的以下行:

database bdb

suffix "dc=my-domain,dc=com"

rootdn "cn=Manager,dc=my-domain,dc=com"

把my-domain改为你的“域名”,本文中并不需要真正的域名,只是ldap的一个容器,但为了ldap的其他服务,建议用你的真实域名。

这里定义了ldap的数据库和管理者。

这里还需要一个管理员密码,加入下面这行(密码123456):

rootpw {MD5}4QrcOUm6Wau+VuBX8g+IPg==

密码可以用slappasswd命令生成,slappasswd -h {MD5}

==============================================================

如果提示如下错误,安装包:

./slappasswd: error while loading shared libraries: : cannot

open shared object file: No such file or directory

============================================================== /download/ 从系统中生成ldap用户脚本工具

修改migrate_文件,我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:

$DEFAULT_BASE = "dc=my-domain,dc=com"

然后执行:

migrate_ >

这是创建根项,并为 Hosts、Networks、Group 和 People 等创建第一级的组织单元(OU)

编辑 全局设置

如果不包含这个文件 (因为里面有objectclass信息)第一段无法使用

==========================================================

dn:dc=my-domain,dc=com

dc:my-domain

objectClass:top

objectClass:domain

dn: ou=People,dc=my-domain,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

dn: ou=Group,dc=my-domain,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

==========================================================

ldapadd -x -D 'cn=manager,dc=my-domain,dc=com' -W 直接输入按ctrl+D保存 或者-f 指定文件

ldapadd -x -D 'cn=manager,dc=my-domain,dc=com' -W -f

-x表示用简单验证,-D表示指定目录,-W表示弹出密码输入提示

==========================================================

不包含这个文件时 以下也可以使用 objectclass

dn: dc=my-domain,dc=com

objectClass: dcObject

objectClass: organization

dc: my-domain

o: Corporation description: d Corporation

==========================================================

ldapsearch -x -b 'dc=my-domain,dc=com' 查看刚才输入信息

ldapdelete -x -D 'cn=manager,dc=my-domain,dc=com' -W

'ou=People,dc=my-domain,dc=com' 删除

ldapdelete -x -D 'cn=manager,dc=my-domain,dc=com' -W

'ou=group,dc=my-domain,dc=com'

ldapdelete -x -D 'cn=manager,dc=my-domain,dc=com' -W

'dc=my-domain,dc=com'

设置使用者密码,当然了,你的用户需要有userPassword项了。

ldappasswd -x -D "cn=manager,dc=my-doamin,dc=com" -W

"uid=aaa,ou=People,dc=my-domain,dc=com" -S

从Linux系统中导出用户和组至LDAP中

执行:

grep ldapuser /etc/group >

./migrate_ >

导出ldapuser组的信息,以同样方式到处其他组的信息

执行:

grep ldapuser /etc/passwd >

./migrate_ >

可以复制passwd文件为后将中系统自带的用户删除后作为脚本的输入参数,这样可以一次转换所有用户。不建议将系

统自带用户导入ldap,这样做的好处是万一在ldap认证出现问题的情况下不至于连root账户也不能登录。

设置了系统使用LDAP验证后如果服务未启动除root外其它用户登录不了。

做完账户信息转换后即可以导入ldap数据了,执行:

ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f

ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f

ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f

这里的和对应的你的组信息和用户信息的文件,注必须最先导入。

==========================================================

实例,脚本从系统/etc/group生成

==========================================================

dn: cn=aaa,ou=Group,dc=my-domain,dc=com

objectClass: posixGroup objectClass: top

cn: aaa

userPassword: {crypt}x

gidNumber: 510

==========================================================

实例脚本从系统/etc/passwd生成

==========================================================

dn: uid=aaa,ou=People,dc=my-domain,dc=com

uid: aaa

cn: aaa

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword: {crypt}$1$FKJV./b1$qtShlwZse5aLjjbsEN2xE/

shadowLastChange: 14355

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 510

gidNumber: 510

homeDirectory: /home/aaa

==========================================================

客户端:

一、setup 设置然后选择"Authentication Configuratio"

#设置后不能用useradd了?

把以下选项选上:

Use LDAP

Use MD5 Passwords

Use Shadow Passwords

Use LDAP Authentication

Local authorization is sufficient(如果有此项)

选择下一步:

请勿选择使用TLS!

输入ldap服务器地址或主机名,若有一台以上ldap服务器则用空格隔开。

输入base dn:dc=my-domain,dc=com(参考文件)

将passwd、shadow、以及group文件备份后清除已经导入的用户信息,再用id命令测试一下,确认用户信息正确。

二、或者修改以下二个文件 vi /etc/sysconfig/authconfig

USELDAP=yes

USELDAPAUTH=yes

USEMD5=yes

USESHADOW=yes

USELOCAUTHORIZE=yes

vi /etc/openldap/

URI ldap://127.0.0.1/

BASE dc=my-domain,dc=com

TLS_CACERTDIR /etc/openldap/cacerts

==========================================================

./configure出现错误:could not locate libtool ltdl.h 安装包

安装包 否则提示找不到cyrus sasl

====================================================================

README安装说明

% tar xfz

% cd openldap-VERSION

% ./configure --help

Variable Description Example

CC C compiler gcc

CFLAGS C flags -O -g

CPPFLAGS cpp flags -I/path/include -DFOO=42

LDFLAGS ld flags -L/usr/local/lib

LIBS libraries -llib

PATH command path /usr/local/bin:/usr/bin:/bin

% [env settings] ./configure [options]

% make depend

% make

% make test

% su root -c 'make install'

client defaults

Standalone LDAP daemon

schema/*.schema Schema Definitions

====================================================================

openldap的安装

2004-04-23 15:18 pm

来自:Linux文档

现载:

地址:无名

1、获得软件

/software/download/

/software/

2、解压

gunzip -c | tar xfB -

在当前工作目录下将产生一个ldap子目录。

3、认真阅读README和INSTALL

4、运行configure

./configure

查看configure的可选项

./configure --help

5、编译

make depend

make

6、测试编译结果

cd tests

make

cd ..

7、安装软件

su root -c make install

8、创建SLAPD的配置文件

编辑/usr/local/etc/文件,该文件中包含下列格式的LDBM数据库定义

database ldbm

suffix "dc=MY-DOMAIN, dc=COM"

rootdn "cn=Manager, dc=MY-DOMAIN, dc=COM"

rootpw secret

替换上面的MY-DOMAIN和COM成实际的域名,例如:

database ldbm

suffix "dc=mydomain, dc=com"

rootdn "cn=Manager, dc=mydomain, dc=com"

rootpw secret

样本放置在/usr/local/etc/openldap/

9、启动SLAPD

su root -c /usr/local/libexec/slapd -f

slapd被安装在配置文件指定的"libexecdir"目录下,通常为/usr/local/libexec/slpad。

10、增加初始的入口(entries)

1) 创建LDIF文件

编辑一个LDIF格式文件:

dn: dc=MY-DOMAIN, dc=COM

dc: MY-DOMAIN

o: MY-ORGANIZATION

objectclass: organization

objectclass: dcObject

dn: cn=Manager, dc=MY-DOMAIN, dc=COM

cn: Manager

sn: Manager

objectclass: person

2) 运行ldapadd

ldapadd -D "cn=Manager, dc=MY-DOMAIN, dc=COM" -W <

11、检查是否已经开始正常工作

ldapsearch -L -b "dc=MY-DOMAIN, dc=COM" "(objectclass=*)"

例如:

ldapsearch -L -b "dc=mydomain, dc=com" -W "(objectclass=*)"

信息来源:/linux/

设置一个基本的OpenLDAP Server

2004-04-23 15:18 pm

来自:Linux文档

现载:

地址:无名

一. 目的

本文旨在介绍如何安装OpenLDAP并且设置一个公司内部的集中化的邮件地址薄服务器供客户端查询。

基本上,OpenLDAPg还应用在其它许多方面,象集中化的用户帐号验证服务器,但邮件地址薄查询是最常用的。

二. 安装

从下载最新的openldap软件包,按照编译和安装的步骤,依次运行:

#tar cvfz

#cd openldap-2.0.11

#./configure

#make depend

#make

#make test

#make install

我的操作环境是redhat 6.1,如果没有遇到任何错误,最后默认安装LDAP后台程序slapd到目录/usr/local/libexec;配置文件在目录/usr/local/etc/openldap/ 并且放各种OpenLDAP工具

ldapadd,ldapdelete,ldapmodify,ldapmodrdn,ldappasswd,ldapsearch在目录/usr/local/bin,运行时数据库在/usr/local/var/openldap-ldbm。

三. 设置

1) 更改配置文件/usr/local/etc/openldap/

在include /usr/local/etc/openldap/schema/这行后面加上下面的行,包括所有的方案。

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/ include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

include /usr/local/etc/openldap/schema/

2) 在文件的"ldbm database definitions"部分更改相应的suffix,rootdn行如下

database ldbm

suffix "o=yourdomain,c=us"

rootdn "cn=root,o=yourdomain,c=us"

rootpw secret

directory /usr/local/var/openldap-ldbm

有各种格式你可以用,这里我用的是o=yourdomain,c=us 说明你的公司域名和所在的国家或地区。

rootdn的格式安装后默认为cn=Manager,这里改为root完全是自己的喜好,这样符合Unix/Linux中root具有最高权限的传统。

3) 现在可以启动slapd了,运行/usr/local/libexec/slapd 。

可以考虑把/usr/local/bin and /usr/local/libexec加到搜索路径中,即加到/etc/profile

中的PATH行:

PATH="$PATH:/usr/X11R6/bin:/usr/local/bin:/usr/local/libexec"

这样下次登录后只需键入 slapd 。

4) 测试ldap server是否正常工作。

运行下面的命令检查是否有相应的输出。

#ldapsearch -x -b 'o=yourdomain,c=us' '(objectclass=*)'

陈绪先生注:有误,应该为

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

或者

ldapsearch -x -b '' -s base '(objectclass=*)'

5) 编辑.ldif文本文件,用ldapadd添加记录进入LDAP数据库。

文件内容如下:

dn: o=yourdomain,c=us

objectclass: dcobject

objectclass: organization

o: yourdomain

dc: yourdomain

dn: cn=Jephe Wu,o=yourdomain,c=us

objectclass: inetorgperson cn: Jephe Wu

sn: Wu

mail: jephe_wu@

......

依次类推,添加每个人的记录进入该文件中,注意对象类型 inetorgperson 至少必须要有cn和sn,这里我们用cn,sn,mail三项定义,这对我们的邮件地址薄功能来说已经足够。你还可以定义象mobile, 等等。

然后用下面的命令添加上面的.ldif文件进入LDAP数据库

#ldapadd -x -D "cn=root,o=yourdomain,c=us" -w secret -f "yourldiffilename"

注:上面的文件的第一部分"dn: o=yourdomain,c=us"是必须的,否则不能添加数据。

用你的公司的域名替换上面的"yourdomain"。

6) 设置Outlook Express, 允许用LDAP服务器查询邮件地址。

"工具/帐号/添加--目录服务",填入你的服务器的IP地址或者主机全称域名,在下一个屏幕中选yes以允许用目录服务来查询地址,最后在"目录服务"栏中选中刚才设置的项目击“属性/高级",在"搜索库"中填入"o=yourdomain,c=us"。

Netscape请根据上面的信息设置相应的选项。

四. 常见使用问题

1) 能启动slapd 没有问题,但不能添加数据库,运行ldapadd添加时出错 "ldap_bind:cannot

contact LDAP Server" 。

答: 最可能的原因是在/etc/hosts中没有127.0.0.1 localhost项目。

2) 注意查询顺序: 如果在Outlook Express的地址薄中有内容,则检查地址时地址薄优先,如果在本地地址薄中找不到相应记录,然后再查询LDAP服务器。

3) 用下面的命令确信客户端与LDAP服务器有通讯,在服务器运行下面的命令,然后在OE中测试检查地址,你将会得到查询LDAP数据库的连接过程的输出。

# tcpdump port 389

信息来源:/linux/

1、获得软件

/software/download/

/software/

2、解压

gunzip -c | tar xfB -

在当前工作目录下将产生一个ldap子目录。

3、认真阅读README和INSTALL

4、运行configure

./configure

查看configure的可选项

./configure --help

5、编译

make depend

make

6、测试编译结果

cd tests

make

cd ..

7、安装软件

su root -c make install

8、创建SLAPD的配置文件

编辑/usr/local/etc/文件,该文件中包含下列格式的LDBM数据库定义

database ldbm

suffix ""dc=MY-DOMAIN, dc=COM""

rootdn ""cn=Manager, dc=MY-DOMAIN, dc=COM""

rootpw secret

替换上面的MY-DOMAIN和COM成实际的域名,例如:

database ldbm

suffix ""dc=mydomain, dc=com""

rootdn ""cn=Manager, dc=mydomain, dc=com""

rootpw secret

样本放置在/usr/local/etc/openldap/

9、启动SLAPD

su root -c /usr/local/libexec/slapd -f

slapd被安装在配置文件指定的""libexecdir""目录下,通常为/usr/local/libexec/slpad。

10、增加初始的入口(entries)

1) 创建LDIF文件

编辑一个LDIF格式文件:

dn: dc=MY-DOMAIN, dc=COM

dc: MY-DOMAIN

o: MY-ORGANIZATION

objectclass: organization

objectclass: dcObject

dn: cn=Manager, dc=MY-DOMAIN, dc=COM

cn: Manager

sn: Manager

objectclass: person

2) 运行ldapadd

ldapadd -D ""cn=Manager, dc=MY-DOMAIN, dc=COM"" -W <

11、检查是否已经开始正常工作

ldapsearch -L -b ""dc=MY-DOMAIN, dc=COM"" ""(objectclass=*)""

例如:

ldapsearch -L -b ""dc=mydomain, dc=com"" -W ""(objectclass=*)""

信息来源:/linux/