ldap 安装

Centos7安装OpenLDAP

环境:
系统版本:centos7.4
openldap版本2.4

### 安装和配置
# 安装并启动服务
# 安装:
yum install -y 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
New password:
Re-enter new password:
{SSHA}ro2QVvReEazlhSFfNgXEwAFQ6wMiDYKl  #记住这个,下面会用到

# 新建一个rootpwd.ldif(名称是自定义的)的文件:
vi rootpwd.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}De5f04STNCI+oQylepfoHLEpB8s8EuTr

* 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}krOGXDmiCdSXuXocOf10F96LJO5ijdXo指定了属性值

### 下面使用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
New password:
Re-enter new password:
{SSHA}OpMcf0c+pEqFLZm3i+YiI2qhId1G/yM3

# 新建一个domain.ldif的文件:
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=Manager,dc=cxzh,dc=ltd" read by * none


dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=cxzh,dc=ltd


dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=cxzh,dc=ltd


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}De5f04STNCI+oQylepfoHLEpB8s8EuTr


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=cxzh,dc=ltd" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=cxzh,dc=ltd" write by * read



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


#### 写入:
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”



# 添加基本目录
# 新建一个basedomain.ldif的文件:

dn: dc=cxzh,dc=ltd
objectClass: top
objectClass: dcObject
objectclass: organization
o: cxzh ltd
dc: cxzh


dn: cn=Manager,dc=cxzh,dc=ltd
objectClass: organizationalRole
cn: Manager
description: Directory Manager


dn: ou=People,dc=cxzh,dc=ltd
objectClass: organizationalUnit
ou: People


dn: ou=Group,dc=cxzh,dc=ltd
objectClass: organizationalUnit
ou: Group



##### 
* 注意替换上面文件内容中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

####  写入:
ldapadd -x -D "cn=Manager,dc=cxzh,dc=ltd" -W -f basedomain.ldif
Enter LDAP Password:
adding new entry “dc=ll2019,dc=cn"

adding new entry "cn=Manager,dc=ll2019,dc=cn"

adding new entry "ou=People,dc=ll2019,dc=cn"

adding new entry "ou=Group,dc=ll2019,dc=cn"




测试:
ldapsearch -LLL -W -x -D "cn=Manager,dc=cxzh,dc=ltd" -H ldap://localhost -b "dc=cxzh,dc=ltd"

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

 完整版本请参考链接:https://blog.csdn.net/sfdst/article/details/107833248

posted @ 2021-07-27 13:37  Star-Hitian  阅读(324)  评论(0编辑  收藏  举报