centos7.3环境安装openldap统一用户认证服务实践实战
安装ldap服务相应的安装包和依赖包
主要包含openldap、、openldap-client、openldap-server等
[root@master1 ~]# yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
migrationtools 实现openldap 用户及用户组的添加
migrationtools 开源工具通过查找/etc/passwd、/etc/shadow、/etc/groups 生成ldif 文件,并通过ldapadd 命令更新数据库数据,完成用户添加
生成密码:
[root@master1 ~]# slappasswdnew password: 12345678re-enter new password: 12345678{ssha}okcry4whwhi5wlpreprp/evugxnu3/uv[root@master1 ~]#
修改openldap配置文件
需要修改的文件含olcdatabase\=\{2\}hdb.ldif 和olcdatabase\=\{1\}monitor.ldif[root@master1 ~]# cd /etc/openldap/slapd.d/cn\=config/[root@master1 cn=config]# ls -ltotal 24drwxr-x--- 2 ldap ldap 4096 aug 6 10:52 cn=schema-rw------- 1 ldap ldap 378 aug 6 10:52 cn=schema.ldif-rw------- 1 ldap ldap 513 aug 6 10:52 olcdatabase={0}config.ldif-rw------- 1 ldap ldap 443 aug 6 10:52 olcdatabase={-1}frontend.ldif-rw------- 1 ldap ldap 562 aug 6 10:52 olcdatabase={1}monitor.ldif-rw------- 1 ldap ldap 609 aug 6 10:52 olcdatabase={2}hdb.ldif
[root@master1 cn=config]# vi olcdatabase\=\{2\}hdb.ldif修改域信息olcsuffix: dc=baidu,dc=comolcrootdn: cn=manager,dc=baidu,dc=com新增一行:olcrootpw: {ssha}okcry4whwhi5wlpreprp/evugxnu3/uv
修改域信息[root@master1 cn=config]# vi olcdatabase\=\{1\}monitor.ldifolcaccess: {0}to * by dn.base=gidnumber=0+uidnumber=0,cn=peercred,cn=external,cn=auth read by dn.base=cn=manager,dc=baidu,dc=com read by * none
配置db数据库信息
[root@master1 cn=config]# cp /usr/share/openldap-servers/db_config.example /var/lib/ldap/db_config
[root@master1 cn=config]# chown -r ldap.ldap /var/lib/ldap
检查配置文件修改的正确性
[root@master1 cn=config]# slaptest -u5b67ba07 ldif_read_file: checksum error on /etc/openldap/slapd.d/cn=config/olcdatabase={1}monitor.ldif5b67ba07 ldif_read_file: checksum error on /etc/openldap/slapd.d/cn=config/olcdatabase={2}hdb.ldifconfig file testing succeeded
启动openldap服务
[root@master1 cn=config]# systemctl start slapd.service[root@master1 cn=config]# systemctl enable slapd.service
导入基本schema信息
ldapadd -y external -h ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -y external -h ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -y external -h ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
修改migrate_common.ph文件
migrate_common.ph文件主要是用于生成ldif文件使用,修改migrate_common.ph文件,如下:
vim /usr/share/migrationtools/migrate_common.ph +71$namingcontext{'group'} = ou=groups;$default_mail_domain = baidu;$default_base = dc=baidu,dc=com;$extended_schema = 1;
添加用户及用户组
添加用户组,使用如下命令:
groupadd ldapgroup1groupadd ldapgroup2添加用户并设置密码,使用如下命令
useradd -g ldapgroup1 ldapuser1useradd -g ldapgroup2 ldapuser2echo '123456' | passwd --stdin ldapuser1echo '123456' | passwd --stdin ldapuser2
把刚刚添加的用户和用户组提取出来,这包括该用户的密码和其他相关属性,如下getent passwd | tail -n 6 > /root/usersgetent shadow | tail -n 6 > /root/shadowgetent group | tail -n 6 >/root/groups
[root@master1 ~]# cat /root/usersldapuser1:x:1004:1004::/home/ldapuser1:/bin/bashldapuser2:x:1005:1005::/home/ldapuser2:/bin/bash[root@master1 ~]# cat /root/groupsldapgroup1:x:1004:ldapgroup2:x:1005:
从/etc/shadow过滤掉这些用户、组、密码:#getent passwd | tail -n 6 > /root/users#getent shadow | tail -n 6 > /root/shadow# getent group | tail -n 6 >/root/groups
根据上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif,如下:/usr/share/migrationtools/migrate_passwd.pl /root/users >/root/users.ldif
vim migrate_passwd.pl找到188行 /etc/shadow 改成 /root/shadow
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldifcat users.ldifcat groups.ldif
导入用户及用户组到openldap数据库
自动生成base.ldif文件:/usr/share/migrationtools/migrate_base.pl >/root/base.ldif
导入基础数据库:ldapadd -x -w 12345678 -d cn=manager,dc=baidu,dc=com -f /root/base.ldif
[root@master1 ~]# ldapadd -x -w 12345678 -d cn=manager,dc=baidu,dc=com -f /root/base.ldifadding new entry dc=baidu,dc=com
adding new entry ou=hosts,dc=baidu,dc=com
adding new entry ou=rpc,dc=baidu,dc=com
adding new entry ou=services,dc=baidu,dc=com
adding new entry nismapname=netgroup.byuser,dc=baidu,dc=com
adding new entry ou=mounts,dc=baidu,dc=com
adding new entry ou=networks,dc=baidu,dc=com
adding new entry ou=people,dc=baidu,dc=com
adding new entry ou=groups,dc=baidu,dc=com
adding new entry ou=netgroup,dc=baidu,dc=com
adding new entry ou=protocols,dc=baidu,dc=com
adding new entry ou=aliases,dc=baidu,dc=com
adding new entry nismapname=netgroup.byhost,dc=baidu,dc=com
可能存在的报错:ldap_add: type or value exists (20)additional info: objectclass: value #3 provided more than once
导入用户到数据库ldapadd -x -w 12345678 -d cn=manager,dc=baidu,dc=com -f /root/users.ldif
导入用户组到数据库:ldapadd -x -w 12345678 -d cn=manager,dc=baidu,dc=com -f /root/groups.ldif
可能会遇到的问题:[root@master1 ~]# ldapadd -x -w -d cn=manager,dc=baidu,dc=com -f /root/base.ldifenter ldap password:ldap_bind: invalid credentials (49)密码错误,slappasswd生成密码,修改配置文件中密码
ldap_add: no such object (32)如:adding new entry ou=jisuanjikexue,o=cqupt,dc=com表示父节点没有创建,需要先添加dn: ou=cqupt,dc=com
把openldap用户加入到用户组
尽管我们已经把用户和用户组信息,导入到openldap数据库中了。但实际上目前openldap用户和用户组之间是没有任何关联的。如果我们要把openldap数据库中的用户和用户组关联起来的话,我们还需要做另外单独的配置。现在我们要把ldapuser1用户加入到ldapgroup1用户组,需要新建添加用户到用户组的ldif文件,如下:
cat >add_user_to_groups.ldif重启openldap服务
systemctl restart rsyslog
此时openldap服务已经安装完毕,并且openldap里也已经成功添加了2个用户ldapuser1/ ldapuser2
一般我们都会使用openldap的客户端来进行管理openldap,对用户的添加修改和删除操作。
后续的文章会介绍openldap client客户端的安装和使用。