介绍
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。LDAP的目录服务其实也是一种数据库系统(Berkeley DB),只是这种数据库是一种树形结构(B Tree),适合读不适合频繁写,不支持事务不能回滚。
我们用LDAP实现多个组件的用户管理,比如把gitlab和harbor等组件的用户放在LDAP一起管理,组件只负责权限管理。用户在这些组件登录时都走LDAP的认证,让用户可以用一套用户名密码即可登录所有组件。
接下来我们一边安装一边学习。
yum安装OpenLDAP,设置数据库配置文件
[root@ldap ~]# yum -y openldap-servers openldap-clients
[root@ldap ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldap ~]# chown ldap.ldap /var/lib/ldap/DB_CONFIG
[root@ldap ~]# systemctl start slapd
[root@ldap ~]# systemctl enable slapd
默认情况下,slapd服务监听的是389端口。
设置OpenLDAP 的管理员用户的密码
[root@ldap ~]# slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
这里使用了slappasswd
命令,返回了加密后的密码,将这个密码添加到OpenLDAP的ldif文件中,LDIF(LDAP Interchange Format)用文本格式表示目录数据库的信息,以方便用户创建、阅读和修改。
创建一个名为的chrootpw.ldif的文件,其实名字叫什么无所谓,内容如下:
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
介绍一下dn
(Distinguished Name)的概念,LDAP的树形存储类似DNS,从叶子到根的这条“路径”是一条数据,称为条目(Entry),dn
就是这条数据的全局唯一标识。它的值我们后边再讲。
changetype: modify
表示我们要修改,add
表示我们要添加一条,类似还有replace
替换。接下来,执行编辑好的 chrootpw.ldif 文件。
[root@ldap ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peerc