 操作环境

  1. 操作系统:Red Hat Enterprise Linux Server release 7.4
  2. 集群环境:CDH5.16.2
    1 OpenLDAP的安装与配置
    配置LDAP服务器
    1.1.1 安装 LDAP 及相关软件包
    yum -y install openldap-clients openldap-servers migrationtools

1.1.2 修改OpenLDAP的slapd.ldif配置文件
安装OpenLDAP服务后默认的配置文件及数据库文件在/usr/share/openldap-servers目录下

将该目录下的slapd.ldif文件拷贝至/root目录下
cp slapd.ldif /root/
vim slapd.ldif
修改slapd.ldif文件,将部分注释去掉,增加include的文件及配置管理员账号和OpenLDAP的根域信息,文件全部内容如下:
include: file:///etc/openldap/schema/corba.ldif
include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/duaconf.ldif
include: file:///etc/openldap/schema/dyngroup.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/java.ldif
include: file:///etc/openldap/schema/misc.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/openldap.ldif
include: file:///etc/openldap/schema/ppolicy.ldif
include: file:///etc/openldap/schema/collective.ldif

dn.base=“gidNumber=0+uidNumber=0,cn=peercred,cn=external,c
n=auth” read by dn.base=“cn=Manager,dc=hadoop,dc=com” read by * none
olcSuffix: dc=hadoop,dc=com
olcRootDN: cn=Manager,dc=hadoop,dc=com
olcRootPW: 123456
olcDbIndex: uidNumber,gidNumber,loginShell eq,pres
olcDbIndex: uid,memberUid eq,pres,sub
olcDbIndex: nisMapName,nisMapEntry eq,pres,sub

有几点需要注意:

  1. 上文中的空行不能省略,它表示一个 DN 的结束;
  2. include 部分是有先后顺序的,不要随意改变顺序;
  3. 有多处 dc=hadoop,dc=com ,这是因为我的 LDAP 域是 hadoop.com ,如果你的 LDAP 域是
    subdomain1.domain1.com ,则应该为 dc=subdomain1,dc=domain1,dc=com 的形式。
  4. olcRootPW 那一行是密码
    1.1.3 使用如下命令,重新生成OpenLDAP的配置
    rm -rf /etc/openldap/slapd.d/*
    将 /root/slapd.ldif 加载进 /etc/openldap/slapd.d 目录:
    slapadd -F /etc/openldap/slapd.d -n 0 -l /root/slapd.ldif

测试配置文件是否正确,返回“config file testing succeeded”则表示配置文件正确
slaptest -u -F /etc/openldap/slapd.d

修改配置文件的属主,操作如下:
chown -R ldap. /etc/openldap/slapd.d/
ll /etc/openldap/slapd.d/

1.1.4 安装OpenLDAP的数据库文件
将/usr/share/openldap-servers/目录下的DB_CONFIG.example文件拷贝至/var/lib/ldap目录下并重命名为DB_CONFIG,操作如下:
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
ll /var/lib/ldap/

修改数据库文件属主
chown -R ldap. /var/lib/ldap/
ll /var/lib/ldap/

1.1.5 完成上述操作后,执行如下命令将slapd服务添加到系统自启动服务并启动slapd服务,查看服务启动状态
systemctl enable slapd
systemctl start slapd
systemctl status slapd

至此OpenLDAP服务安装成功。

1.2 配置OpenLDAP客户端
1.2.1 修改/etc/openldap/ldap.conf文件,内容如下:
vim /etc/openldap/ldap.conf
配置参数 URI 是部署的 openldap 服务器地址,BASE 参数是搜索域

1.3 导入根域及管理员账号
1.3.1 创建root.ldif文件,内容如下
dn: dc=hadoop,dc=com
dc: hadoop
objectClass: top
objectClass: domain

dn: cn=Manager,dc=hadoop,dc=com
objectClass: organizationalRole
cn: Manager

1.3.2 导入根域及管理员信息到OpenLDAP服务中
ldapadd -D “cn=Manager,dc=hadoop,dc=com” -W -x -f root.ldif

1.3.3 查看是否导入成功
ldapsearch -h cdh1.hadoop.com -b “dc=hadoop,dc=com” -D “cn=Manager,dc=hadoop,dc=com” -W

ldapsearch h cdh1.hadoop.com -b “dc=hadoop,dc=com” -D “cn=Manager,dc=hadoop,dc=com” -W |grep dn

1.4 添加LDAP用户
1.4.1 使用文本编辑建立一个文本文件,文件名称 ldapuser.txt 内容如下:
5000 ldapuser1 123456
5001 ldapuser2 123456
5002 ldapuser3 123456
第一列为用户 ID,第二列为用户名,第三列为密码,中间用空格隔开。
1.4.2 建立脚本 add-user.sh 内容如下:
#!/bin/bash
USER_LIST=ldapuser.txt
HOME_REMOTE=/home/ldapuser
mkdir -pv $HOME_REMOTE
for USERID in awk '{print $1}' $USER_LIST; do
USERNAME="grep "$USERID" $USER_LIST | awk '{print $2}'"
HOMEDIR=openldap 插入百万数据 openldap 集群_hadoop{USERNAME}
useradd $USERNAME -u $USERID -d openldap 插入百万数据 openldap 集群_openldap 插入百万数据_02USERID" $USER_LIST | awk ‘{print $3}’ | passwd --stdin $USERNAME
done
1.4.3 执行 add-user.sh 脚本
建立 LDAP 用户账号,并建立他们的家目录:
chmod 775 add-user.sh
./add-user.sh

1.5 导入基础文件及用户和用户组
在安装OpenLDAP服务是安装了migrationtools服务,这里我们可以通过该服务生成OpenLDAP的基础文件、用户和用户组的ldif文件
(1) 进入/usr/share/migrationtools/目录修改migrate_common.ph文件,将文件中的openldap 插入百万数据 openldap 集群_hadoop_03DEFAULT_BASE修改为自己OpenLDAP的域

(2) 使用如下命令导出OpenLdap的base.ldif文件
/usr/share/migrationtools/migrate_base.pl >base.ldif
只保留这两个

(3) 执行如下命令导出操作系统的group.ldif文件
/usr/share/migrationtools/migrate_group.pl /etc/group > group.ldif
根据需要删除不需要导入OpenLDAP服务的group,只留下 3 个刚创建的 LDAP 用户相关的组的信息,其他用户的信息都删掉。

(4) 使用如下命令导出操作系统用户的ldif文件
/usr/share/migrationtools/migrate_passwd.pl /etc/passwd >user.ldif
根据需要保留user.ldif文件中需要导入OpenLDAP服务的用户信息,注意用户信息与group.ldif中组的对应,否则会出现用户无相应组的问题。
只留下 3 个刚创建的 LDAP 用户的相关信息,其他用户的信息都删掉。

(5) 使用slapadd命令将基础文件及用户和组导入OpenLDAP
ldapadd -D “cn=Manager,dc=hadoop,dc=com” -W -x -f base.ldif
ldapadd -D “cn=Manager,dc=hadoop,dc=com” -W -x -f group.ldif
ldapadd -D “cn=Manager,dc=hadoop,dc=com” -W -x -f user.ldif
操作成功会有如下提示:
(6) 查看是否导入成功
ldapsearch -h cdh1.hadoop.com -b “dc=hadoop,dc=com” -D “cn=Manager,dc=hadoop,dc=com” -W|grep dn

2 集群的所有节点配置LDAP客户端
2.1 安装 LDAP 认证相关软件包
yum -y install sssd-ldap nss-pam-ldapd openldap-clients

2.2 配置 openldap 客户端
编辑 /etc/openldap/ldap.conf 文件,配置如下:
SASL_NOCANON on
URI ldap://cdh1.hadoop.com
BASE dc=hadoop,dc=com
然后执行 LDAP 查询命令:
ldapsearch -x -W -D “cn=Manager,dc=hadoop,dc=com” -b “uid=ldapuser1,ou=People,dc=hadoop,dc=com”

2.3 配置 sssd
编辑 /etc/sssd/sssd.conf 文件,如果没有该配置文件,则新建一个,配置文件内容如下:
[domain/default]
ldap_search_base = dc=hadoop,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://cdh1.hadoop.com
[sssd]
services = nss, pam, autofs
config_file_version = 2
domains = default
[nss]
homedir_substring = /home
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
修改/etc/sssd/sssd.conf 的属主和权限:
chown root.root /etc/sssd/sssd.conf
chmod 600 /etc/sssd/sssd.conf
重启 sssd 服务:
systemctl restart sssd
如果成功,则可以用id 命令看到这些 LDAP 用户: