文章目录
tips
1. setup可以进入UI编辑文件
2. 须知:
- 为了HA,使用主从模式,起码要2台。1台差不过能给1000个节点提供目录服务。
- 对硬件要求很低
- ldap所有配文:末尾一定不能有空格,冒号后面一定要有空格。每行前后一定不能有空格
一、下载
wwww.openldap.org/doc/admin24/install.html
ldap官方文档只有编译安装。
openldap是主从模式,先确定一个主节点,安装server服务。server下面2个都要安装,client只需要安装第2个
yum -y install openldap openldap-clients openldap-servers migrationtools openldap-devel nss-pam-ldapd bind-dyndb-ldap compat-openldap perl-LDAP krb5-server-ldap php-ldap openssl
yum -y install openldap-clients sssd authconfig nss-pam-ldapd
1. 出现这个错可以忽略
2. 完成画面
3. 检验
slapd -VV
查看ldap版本
rpm -qa |grep openldap
二、配置
note:ldap所有配文的空格不能乱,末尾一定不能有空格,冒号后面一定要有空格
1. 主配文
cp /usr/share/openldap-servers/slapd.ldif /etc/openldap
vim /etc/openldap/slapd.ldif
{1} 这3行注释
{2} schema setting
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
注意,是ppolicy,2个p。冒号后面有空格,每行的前后都不能有空格
{3} Server status monitoring
cn代表ldap超级管理员用户名,dc代表域
dn: olcDatabase=monitor,cn=config
objectClass: olcDatabaseConfig
olcDatabase: monitor
olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,c
n=auth" read by dn.base="cn=ldapadmin,dc=example,dc=com" read by * none
L
{4} Backend database definitions
ldap数据库的设置,需要指定管理员的账号密码
添加3个olcDbIndex,修改如下。注意:有几个是空格,不是下划线,是eq不是eg
。这里的olcRootPW是超级管理员密码,默认没有,要手动添加olcRootPW。
注意是eq,不是eg
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: hdb
olcSuffix: dc=example,dc=com
olcRootDN: cn=ldapadmin,dc=example,dc=com
olcRootPW: 123456
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcDbIndex: uidNumber,gidNumber,loginShell eq,pres
olcDbIndex: uid,memberUid eq,pres,sub
olcDbIndex: nisMapName,nisMapEntry eq,pres,sub
2. migrate
vim /usr/share/migrationtools/migrate_common.ph,修改如下,共3处:
3. 配置client
vim /etc/openldap/ldap.conf
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
TLS_CACERTDIR /etc/openldap/cacerts
# Turning this off breaks GSSAPI used with krb5 when rdns = false
SASL_NOCANON on
URI ldap://192.168.233.105
BASE dc=example,dc=com
4. 分发client配置,在所有client节点执行authconfig
将server节点的client的配置分发的所有client
然后配置sssd,authconfig会自动配置/etc/sssd/sssd.conf
配文
hosts=`cat /etc/hosts | grep idss | grep '#' -v | awk '{print $1}'`
for i in $hosts
do
scp /etc/openldap/ldap.conf $i:/etc/openldap
done
for i in $hosts
do
ssh $i "systemctl start sssd;systemctl enable sssd;authconfig --enablesssd --enablesssdauth --enablerfc2307bis --enableldap --enableldapauth --disableforcelegacy --disableldaptls --disablekrb5 --ldapserver ldap://10.7.48.159 --ldapbasedn 'dc=example,dc=com' --enablemkhomedir --update"
done
执行后用vim /etc/sssd/sssd.conf
检验
三、重新生成ldap的配置
rm -rf /etc/openldap/slapd.d/*
slapadd -F /etc/openldap/slapd.d -n 0 -l /etc/openldap/slapd.ldif
slaptest -u -F /etc/openldap/slapd.d
四、启动
1. 启动slapd
chown -R ldap:ldap /etc/openldap/slapd.d/
chmod -R 700 /etc/openldap/slapd.d
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap:ldap /var/lib/ldap/
systemctl enable slapd
systemctl start slapd
systemctl status slapd
systemctl enable slapd;systemctl start slapd;systemctl status slapd
2. 在所有clients启动sssd,sssd用来在不同节点同步用户
chmod 600 /etc/sssd/sssd.conf
systemctl start sssd
systemctl enable sssd
systemctl status sssd
chmod 600 /etc/sssd/sssd.conf;systemctl start sssd;systemctl enable sssd;systemctl status sssd
五、验证
在ldap上创建1个用户,然后在linux没有(/etc/passwd中没有),可以通过id xx查到,而且可以su xx来登录。
六、初始化:创建超级管理员、根域、基础数据库
须知:
- ldap是通过加载文件的方式来确认用户的,也就是说,如果想添加一个用户,只要在一个ldif文件中按指定格式配置用户信息,然后让ldap加载这个文件即可。一个文件可以设置多个用户,可以并存多个文件。
1. 创建超级管理员和根域
openldap安装成功,默认ldap中没有任何用户,连超级管理员用户也没有,所以接下来把超级管理员用户和根域导进去
vim /opt/root.ldif
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain
dn: cn=ldapadmin,dc=example,dc=com
objectClass: organizationalRole
cn: ldapadmin
将根域及管理员账号添加到OpenLDAP服务中,执行如下命令
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/root.ldif -hserver所在ip
-p389
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/root.ldif -hn105 -p389
2. 配置ldap基础数据库
注意冒号后面的空格,末尾不能有空格
vim /opt/base.ldif
dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
导入基础数据库到OpenLDAP服务中
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/base.ldif -h10.7.48.159 -p389
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/base.ldif -h192.168.233.105 -p389
七、使用usage
须知
基础工作都已完成,现在我们开始在ldap中创建个普通用户
可以用ldap命令创建,也可以用web工具创建,
在ldap中创建用户和组需要手动指定uid和gid,要确保跟linux中原有的id不重复。
1. 使用UI
可视化工具为ApacheDirectoryStudio,可随意下载
![](https://i-blog.csdnimg.cn/blog_migrate/23d3fca46e8b2e1c64b986009dfc26c6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f7f2486b37cff1011c787f14db687efd.png)
2. 使用命令行方式
查看/etc/group /etc/passwd中最新的gid和uid多少
{1} 先创建用户组文件
vim /opt/group.ldif
dn: cn=zdk,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: zdk
userPassword: {crypt}x
gidNumber: 1201
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/group.ldif -hz1.idss.com -p389
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/group.ldif -hnode105 -p389
{2} 创建用户文件
vim /opt/users.ldif
dn: uid=zdk,ou=People,dc=example,dc=com
uid: zdk
cn: zdk
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: 123456
loginShell: /bin/bash
uidNumber: 1201
gidNumber: 1201
homeDirectory: /home/zdk
将用户导入到ldap中
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/users.ldif -hldap-server-ip
-p389
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/users.ldif -hnode105 -p389
八、检验
1. id 命令检验
此时你在服务器上id zdk,就可以看到用户zdk了,并且看到它的组了,但是它的用户和组没有在/etc/passwd和/etc/group中,这样就实现了用户wu由ldap管理了,不依赖linux了
ldapsearch -LLL -D ‘cn=ldapadmin,dc=example,dc=com’ -w 123456 -h10.7.48.159 -p389
ldapsearch -LLL -D ‘cn=ldapadmin,dc=example,dc=com’ -w 123456 -h192.168.233.105 -p389
2. su 命令检验
hdfs是系统用户,cat /etc/passwd | grep hdfs ,有
zdk是ldap用户,cat /etc/passwd | grep zdk,没有
九、 配置ldap的日志
日志不影响ldap的运行,默认没有日志
process
vim /opt/loglevel.ldif,注意最后是stats,不是status
导入到OpenLDAP中,并重启OpenLDAP服务
ldapmodify -Y EXTERNAL -H ldapi:/// -f /opt/loglevel.ldif
systemctl restart slapd
vim /etc/rsyslog.conf
最后一行添加
systemctl restart rsyslog
重启ldap systemctl restart slapd
tail -f /var/log/slapd.log 就可以查看日志
十、安装过程中的traps
1. 包名搞错导致ldapsearch查不到创建的用户
nss-pam-ldapd包搞错了,弄成了nss- 和 pam-ldapd 2个包
2. 只有在server节点能用ldapsearch和id命令查到用户,client节点查不到
client节点没有启动sssd或者没有authconfig
3. 粗心:
- 这里一共是5个olcDbIndex,默认有2个,需要添加3个,结果把默认的2个给删了,只添加了3个
- 注意引号,在这入了大坑
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/test.ldif
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/test.ldif