转载自:http://www.linuxfly.org/post/671/

某项目,需要在Asianux 4.0上配置LDAP服务。参考以前的[原]操作ldap 数据库一文,在执行ldapadd 命令时报错:

引用

ldap_bind: Invalid credentials (49)

经分析及查询相关资料,原来该版本的OpenLDAP已改用其他格式保存配置数据,原来的slapd.conf 仅作为模板使用。

一、软件版本
先来看看具体的版本信息:

引用

# cat /etc/asianux-release
Asianux Server 4 (Hiranya)
# rpm -qa|grep openldap
openldap-2.4.19-15.AXS4.x86_64
openldap-servers-2.4.19-15.AXS4.x86_64
openldap-devel-2.4.19-15.AXS4.x86_64
openldap-clients-2.4.19-15.AXS4.x86_64
compat-openldap-2.4.19_2.3.43-15.AXS4.x86_64

二、配置LDAP
1.修改配置文件
这里假设系统是新安装好的,没有遗留数据。若非如此,请参考附录。
在/etc/openldap目录下,有一个slapd.conf.bak文件,拷贝一份为slapd.conf。

# cd /etc/openldap
# cp slapd.conf.bak slapd.conf

(为什么这里会没有slapd.conf,第一次配置时已觉得有点问题,后来才知道,因为该文件现仅作为模板使用,服务真正读取的配置数据不在这里)
然后,使用slappasswd命令创建一个密码:

引用

# slappasswd
New password:
Re-enter new password:
{SSHA}3c6DQ4xIKU/7Qz22Y2S2MgOoHhQkasR/

接着,参考以前的文档,修改slapd.conf中相关的信息,例如:

引用

database        bdb
suffix          "dc=example,dc=com"
checkpoint      1024 15
rootdn          "cn=Manager,dc=example,dc=com"
#rootpw          secret
rootpw {SSHA}3c6DQ4xIKU/7Qz22Y2S2MgOoHhQkasR/

access to *
        by dn.exact="cn=Manager,dc=example,dc=com" read
        by * none

蓝色标注的是密码,默认是注释的或为明文的“secret”,这里直接使用slappasswd命令生成的密码。

2.生成配置数据
正如前面所说的,服务运行时并不会读取slapd.conf 文件,而是从/etc/openldap/slapd.d目录中读取相关信息。
我们打开slapd.d/cn=config/olcDatabase={1}bdb.ldif 文件会看到以slapd.conf.bak生成的信息:

引用

# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb.ldif
olcDatabase: {1}bdb
olcSuffix: dc=my-domain,dc=com
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=Manager,dc=my-domain,dc=com

所以,接下来要做的,就是先把这些数据删掉:

# rm -rf /etc/openldap/slapd.d/*

然后重新生成新配置数据:

引用

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

看看新生成的配置数据是否匹配:

引用

# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb.ldif
dn: olcDatabase={1}bdb
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
olcSuffix: dc=example,dc=com
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=Manager,dc=example,dc=com

不错吧。但为了便于slapd服务读取,需要改一下宿主:

引用

# chown -R ldap.ldap slapd.d/
# ll slapd.d/
drwxr-x---. 3 ldap ldap 4096 10月 18 05:17 cn=config
-rw-------. 1 ldap ldap 1007 10月 18 05:17 cn=config.ldif

默认权限是没问题的,不需修改。

3.生成bdb数据
配置文件中,默认指定把数据存放在/var/lib/ldap目录下。启动LDAP服务前,还需要拷贝一个DB_CONFIG文件:

# cp /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap.ldap /var/lib/ldap/DB_CONFIG

若不拷贝该文件,会报错,请见附录。启动slapd服务:

引用

# service slapd start
正在启动 slapd:                                           [确定]

4.导入数据
为了可正确访问LDAP数据库,还需要导入初始数据。使用vi 创建一个ldif文件,内容如下:

引用

# cat example.ldif
dn:dc=example,dc=com
objectclass:dcObject
objectclass:organization
o:Example,Inc.
dc:example

dn:cn=Manager,dc=example,dc=com
objectclass:organizationalRole
cn:Manager

执行ldapadd命令导入:

引用

# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f example.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"

adding new entry "cn=Manager,dc=example,dc=com"

提示输入密码时,输入开始由slappasswd生成,并写入slapd.conf 配置模板rootpw部分后面的密码。
至此,LDAP配置已完成。

5.备份配置模板
为免出现误会,通常建议把配置文件sladp.conf 拷贝为.bak 文件,作为模板保存:

引用

# mv slapd.conf slapd.conf.bak
mv:是否覆盖"slapd.conf.bak"? y

三、使用phpLDAPadmin访问
phpLDAPadmin是使用php编写的,易于访问LDAP数据库的Web工具。从官网下载后,解压到/var/www/html 目录下,并改名、赋予合适的属主。

引用

# ll /var/www/html/phpldapadmin/ -d
drwxr-xr-x. 11 apache apache 4096 10月 18 03:45 /var/www/html/phpldapadmin/

然后,拷贝一个配置文件:

# cd /var/www/html/phpldapadmin/config
# mv config.php.example config.php

即可配置完成。
访问http://ip/phpladpadmin:

输入slapd.conf 配置模板中的rootdn 部分作为登陆DN,rootpw 部分为密码。

登录成功

四、附录
1.若系统存在遗留数据,可删除相关数据后重新配置

# rm -rf /var/lib/ldap/*
# rm -rf /etc/openldap/slapd.d/*

2.执行ldapadd 命令时报错

引用

ldap_bind: Invalid credentials (49)

这是由于/etc/openldap/slapd.d 目录中使用的数据与执行导入命令时设置的DN 路径不符。
解决办法是,修改ldapadd 中-D 参数后面指定的DN值,或使用slapd.conf 配置模板生成新的配置数据。方法可见上面。

3.执行ldap_add命令时报错

引用

Invalid syntax (21)

这通常的原因是导入的ldif 中存在不合法的Class,与Schema 中定义不符。例如:objectclass:organizationalRole 写成 objectclass:organizational 等等。
解决方法是,修改Schema文件,或使用正确的Class定义。

4.重启slapd服务或执行slaptest 时报错

引用

bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).

原因是/var/lib/ldap目录中缺少DB_CONFIG文件,参考上面的方法从openldap-servers 包中拷贝一份,并赋予合适的属主即可。

五、参考资料
Red Hat 6: How to resolve ldapadd ldap_bind: Invalid credentials (49)
centos 简单安装 openldap

相关日志
[原]操作ldap 数据库
[原]LDAP服务介绍

转载于:https://blog.51cto.com/wjcaiyf/1601204

执行ldapadd 命令时报错:ldap_bind: Invalid credentials (49)相关推荐

  1. 【Cmake】执行cmake命令时报错:No XSLT processor found

    一.问题描述 在ubuntu中,在生成Doc(文档)中,执行cmake命令时报错:No XSLT processor found 二.原因查找 google该错误信息,原因是确实ubuntu中没有安装 ...

  2. mysql grant reload,MySQL执行GRANT命令时报错ERROR 1045解决办法

    摘要 腾兴网为您分享:MySQL执行GRANT命令时报错ERROR 1045解决办法,杂志迷,云闪付,一直播,小象优品等软件知识,以及592美剧,乐天网络电视,吃鸡无后座,易语言宝盒,语音转文字软件, ...

  3. 执行wsl 命令时报错 nsenter: failed to execute 564: No such file or directory

    问题 在cmd命令框中执行wsl命令时报错 nsenter: failed to execute 564: No such file or directory无法进入Ubuntu子系统中 C:\Use ...

  4. LDAP 配置 ldap_bind: Invalid credentials (49)

    在执行 ldapadd -x -D cn=Manager,dc=srv,dc=world -W -f basedomain.ldif,要求输入密码Enter LDAP Password: ldap_b ...

  5. Gitlab和AD账号集成,账号登录时报错:Invalid credentials

    背景: 公司搭建了Gitlab,然后和AD账号进行集成,采用AD账号进行认证. 问题: 其他集成的系统使用AD账号都无认证错误的问题,只有Gitlab认证时,提示报错:Invalid credenti ...

  6. 编译Android源码,执行lunch命令时报错“No such file: /root/.lunchrc”的解决办法

    1.问题描述: 在编译Android系统源码时,执行#lunch命令,报"No such file: /root/.lunchrc"错误,现象如图所示. 2.解决办法: 将系统源码 ...

  7. 在windows上执行certutil命令时报错CertUtil: WsResetMetadata

    E:\TDDOWNLOAD\ORACLE11G>certutil -hashfile p13390677_112040_Linux-x86-64_1of7.zip md5 ---->> ...

  8. 执行ssh命令时报错CANNOT LINK EXECUTABLE “ssh“ library “libcrypto.so.1.1“ not found解决方法

    1. 删除 openssh 2. 安装 openssl 3. 安装 openssh 卸载:pkg uninstall 包名

  9. linux怎么卸载webpack,安装webpack后,执行webpack -v命令时报错:SyntaxError: Block-sc

    安装webpack后,执行webpack -v命令时报错如下: [root@FreeServer ~]# webpack -v /usr/local/node-v4.4.7-linux-x64/lib ...

最新文章

  1. 哈希表的C实现(二)
  2. UNIX网络编程读书笔记:辅助数据
  3. 分享实录 | 深度学习技术红利下的代码补全
  4. redis——HyperLogLog
  5. 信息学奥赛一本通C++语言——1039:判断数正负
  6. 修复IE下相对容器中绝对定位Bug
  7. html中怎么不让网页缩放_网页中的形状图形都是怎么画出来的?
  8. 微软再损一将!继Nat Friedman后,另一Xamarin联合创始人也已离职
  9. java.io.IOException: CreateProcess error=2, ?????????
  10. c++ static静态变量、静态函数
  11. python 全国内地中高风险地区数量查询与可视化(分省)
  12. 使用Excel拼接SQL语句
  13. 光纤跳线接口_如何为10G SFP+光模块搭配对应的光纤跳线类型?
  14. QCC305x系列开发教程(入门篇)之1.3-烧录方式使用USB时的驱动安装及其出现“未知设备”的解决方法
  15. android scrollview滚动条初始位置,ScrollView 设置滚动条的位置
  16. python 视频播放 拖动_python + opencv鼠标拖动视频区域裁剪
  17. 全网首发!Java高级程序员面试集合
  18. 文件下载和二进制文件(图片、mp4视频)预览响应头的设置(防止中文名名乱码)
  19. 边缘计算(雾计算)——AI+IoT的热词
  20. python 生成payload_通过Python实现Payload分离免杀过程详解

热门文章

  1. 说说你对http、https、http2.0的理解【前端每日一题-25】
  2. Knockout 官网学习文档目录
  3. LeetCode 168. Excel Sheet Column Title
  4. 栈和队列----用栈求解汉诺塔问题
  5. c#使用Stopwatch来计算时间间隔
  6. 查询score中选学多门课程的同学中分数为非最高分成绩的记录。
  7. cdlinux miniwdep 配置无线网卡
  8. 《深入.NET平台和C# 编程》内部测试 笔试题
  9. 6.Python标准库_子进程 (subprocess包)
  10. FIneCMS /dayrui/libraries/Chart/ofc_upload_image.php Arbitrary File Upload Vul