环境

系统版本:centos7.4

openldap版本2.4

安装和配置

安装并启动服务

安装:

yum install openldap openldap-servers openldap-clients


拷贝数据库配置文件


cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG

 DB_CONIFG中主要是关于Berkeley DB的相关的一些配置

 启动OpenLDAP Server:



systemctl start slapd 
systemctl enable slapd
systemctl status slapd



slapd即standard alone ldap daemon,该进程默认监听389端口

设置root用户密码

先用一个命令生成一个LDAP管理用户root密码:



slappasswd -s 123456 New password: Re-enter new password: {SSHA}eNZrBtwRRsUg03i5cmGATh3ZnDNfm3Od #记住这个,下面会用到



新建一个rootpwd.ldif(名称是自定义的)的文件:/opt/ldif



vi rootpwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}eNZrBtwRRsUg03i5cmGATh3ZnDNfm3Od



  • ldif即LDAP Data Interchange Format,是LDAP中数据交换的一种文件格式。文件内容采用的是key-value形式,注意value后面不能有空格。
  • 上面内容中dn即distingush name
  • olc即Online Configuration,表示写入LDAP后不需要重启即可生效
  • changetype: modify表示修改一个entry,changetype的值可以是add,delete, modify等。
  • add: olcRootPW表示对这个entry新增了一个olcRootPW的属性
  • olcRootPW: {SSHA}eNZrBtwRRsUg03i5cmGATh3ZnDNfm3Od指定了属性值

下面使用ldapadd命令将上面的rootpwd.ldif文件写入LDAP:



ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"


 

导入schema

导入schema,schema包含为了支持特殊场景相关的属性,可根据选择导入,这里先全部导入:


ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done

 

设定默认域

先使用slappasswd生成一个密码:


slappasswd -s 123456
New password:
Re-enter new password:
{SSHA}eNZrBtwRRsUg03i5cmGATh3ZnDNfm3Od


新建一个domain.ldif的文件:



ldap更改域控密码 如何修改ldap密码_运维



vi domain.ldif
 
  
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
 read by dn.base="cn=admin,dc=ceshi,dc=com" read by * nonedn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=ceshi,dc=comdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=ceshi,dc=com#这个是admin的密码设置/如果要修改密码把这段拿出来 add改成replace,然后执行 ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}AtEg7bsctKkWCpeeSdazKcrFCASuU8fPdn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
 dn="cn=admin,dc=ceshi,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=ceshi,dc=com" write by * read


ldap更改域控密码 如何修改ldap密码_运维



  • olcAccess即access,该key用于指定目录的ACL即谁有什么权限可以存取什么
  • olcRootDN设定管理员root用户的distingush name
  • 注意替换上面文件内容中cn为具体的域信息
  • olcRootPW用上面新生成的密码替换

写入:



ldap更改域控密码 如何修改ldap密码_运维



ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"



ldap更改域控密码 如何修改ldap密码_运维



 

添加基本目录

新建一个basedomain.ldif的文件:



ldap更改域控密码 如何修改ldap密码_运维



 



------原



dn: dc=ceshi,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: ceshi com
dc: ceshidn: cn=admin,dc=ceshi,dc=com
objectClass: organizationalRole
cn: admin
description: Directory admindn: ou=People,dc=ceshi,dc=com
objectClass: organizationalUnit
ou: Peopledn: ou=Group,dc=ceshi,dc=com
objectClass: organizationalUnit
ou: Group


------


dn: dc=ceshi,dc=com
objectclass: dcObject
objectclass: organization
o: Ceshi.Inc
dc: ceshidn: cn=admin,dc=ceshi,dc=com
objectClass: organizationalRole
cn: admin
description: Directory admin

dn: ou=it,dc=ceshi,dc=com
ou: it
objectClass: organizationalUnitdn: cn=hanxiaohui,ou=it,dc=ceshi,dc=com
ou: it
cn: hanxiaohui
sn: hui
userPassword: 123456
objectClass: inetOrgPerson
objectClass: organizationalPerson


ldap更改域控密码 如何修改ldap密码_运维



  • 注意替换上面文件内容中dn为具体的域信息
  • 理解dn,cn,dc
  • DC即Domain Component,LDAP目录类似文件系统目录dc=zhidaoauto,dc=com相当于/com/zhidaoauto
  • CN即Common Name,CN有可能代表一个用户名,例如cn=Manager,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的管理员用户Manager
  • OU即Organizational Unit,例如ou=People,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的一个组织单元People

 写入:



ldap更改域控密码 如何修改ldap密码_运维



ldapadd -x -D cn=admin,dc=ceshi,dc=com -W -f basedomain.ldif
Enter LDAP Password:
adding new entry "dc=zhidaoauto,dc=com"

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

adding new entry "ou=People,dc=zhidaoauto,dc=com"

adding new entry "ou=Group,dc=zhidaoauto,dc=com"


ldap更改域控密码 如何修改ldap密码_运维



 

测试:



ldap更改域控密码 如何修改ldap密码_运维


ldapsearch -LLL -W -x -D "cn=admin,dc=ceshi,dc=com" -H ldap:/// -b "dc=admin,dc=com"
Enter LDAP Password:
dn: dc=zhidaoauto,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: zhidaoauto com
dc: zhidaoauto

dn: cn=Manager,dc=zhidaoauto,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=zhidaoauto,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=zhidaoauto,dc=com
objectClass: organizationalUnit
ou: Group

ldap更改域控密码 如何修改ldap密码_运维



 

管理工具

可以在局域网内的windows电脑上下载ldapadmin作为管理工具 下载地址: http://www.ldapadmin.org/download/ldapadmin.html

ldap更改域控密码 如何修改ldap密码_ldap_11

知识点:

ldap更改域控密码 如何修改ldap密码_Group_12

登录账号为:

登录ldap的用户dn为:cn=Manager,dc=zhidaoauto,dc=com

ou=Group和ou=People的区别:

从ou=Group里创建的是组,从ou=People创建的是用户

ou=People里的用户怎么加入到ou=Group下边的组呢:

右键"yunwei"组-->properties

ldap更改域控密码 如何修改ldap密码_ldap更改域控密码_13

 

ldap更改域控密码 如何修改ldap密码_数据库_14

 

ldap更改域控密码 如何修改ldap密码_ldap_15

这样就把ou=People里"zhaijunming"用户添加到ou=Group里的"yunwei"组了

 

添加用户:

ldap更改域控密码 如何修改ldap密码_ldap更改域控密码_16

 

 修改admin密码

 



1)
[root@localhost /opt/ldif 17:55:41&&31]#slappasswd -s 1q2w3e4r
{SSHA}dYGee/j6y0qOeHqCTgp3vkIGETMOZYkQ

2)
vim changeAdminPwd.ldif (用上面的密码)
-------------------------------------------------------------
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}AtEg7bsctKkWCpeeSdazKcrFCASuU8fP
--------------------------------------------------------------

3)
ldapadd -Y EXTERNAL -H ldapi:/// -f changeAdminPwd.ldif



  

参考文章

https://blog.frognew.com/2017/05/openldap-install-notes.html#ldapadmin