Openshift:可靠的Kubernetes发行版k8s-openshift-okddevops:改变思维,让一切更加高效

CentOS上OpenLDAP Server使用cn=confi

2018-09-04  本文已影响98人  潘晓华Michael
LDAPworm

翻译自How to Configure OpenLDAP server in Red Hat Enterprise Linux 7 using cn=config method ?

环境

问题

操作

  1. 安装openldap包
yum install -y openldap openldap-clients openldap-servers

LDAP默认的配置目录是/etc/openldap/slapd.d

[root@rhel7 ~]# cd /etc/openldap/slapd.d/
[root@rhel7 slapd.d]# ls -l
drwxr-x---. 4 ldap ldap 4096 Aug  3 22:49 cn=config
-rw-------. 1 ldap ldap  589 Aug  2 23:39 cn=config.ldif
[root@rhel7 slapd.d]# cd cn\=config
[root@rhel7 cn=config]# ls -l
drwxr-x---. 2 ldap ldap 4096 Aug  3 22:11 cn=schema
-rw-------. 1 ldap ldap  378 Aug  2 22:21 cn=schema.ldif
-rw-------. 1 ldap ldap  552 Aug  3 20:42 olcDatabase={0}config.ldif
-rw-------. 1 ldap ldap  443 Aug  2 22:21 olcDatabase={-1}frontend.ldif
-rw-------. 1 ldap ldap  562 Aug  2 22:21 olcDatabase={1}monitor.ldif
drwxr-x---. 2 ldap ldap   65 Aug  3 22:53 olcDatabase={2}hdb.ldif
  1. 设置olcSuffix,设置domain。只需要更新下文件olcDatabase={2}hdb.ldif中的olcSuffix
[root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
olcSuffix: dc=example,dc=com
  1. 推荐先创建一个专用的具有所有权限的账号,用它来更新LDAP的数据库。需要更新文件olcDatabase={2}hdb.ldif中的olcRootDN和olcRootPW
[root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
olcRootDN: cn=Manager,dc=example,dc=com
olcRootPW: redhat
  1. 同时设置config数据库的管理员账号
    这里设置的密码很简单,请在生产环境下将密码设置复杂些
[root@rhel7 cn=config]# vi olcDatabase\=\{0\}config.ldif
olcRootDN: cn=config
olcRootPW: secret
  1. 使用slaptest命令去验证配置
[root@rhel7 cn=config]# slaptest -u
config file testing succeeded

如果报ldif_read_file: checksum error这样的错误,是因为计算文件的CRC32码来自动校验(文件中前两行中带有校验码),需要更新校验码

  1. 如果配置验证成功,启动openldap server
# systemctl start slapd
  1. 创建ldap server的基础结构
$ cat base.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
o: example.com

dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups       
  1. 使用ldapadd命令向LDAP目录导入基础结构
$ ldapadd -x -D "cn=Manager,dc=example,dc=com" -w redhat -f base.ldif
adding new entry "dc=example,dc=com"
adding new entry "ou=users,dc=example,dc=com"
adding new entry "ou=groups,dc=example,dc=com"
  1. 使用ldapsearch命令验证基础结构是否成功导入
$ ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -b dc=example,dc=com -w redhat
  1. 在向ldap结构中添加users和groups之前,先使用ldapadd导入schema,以免出现“object class not defined"的报错
# ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/cosine.ldif 
# ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/nis.ldif 
# ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/inetorgperson.ldif
  1. 向ldap结构中添加users和groups
  1. 使用ldapadd命令添加users和groups
$ ldapadd -x -D cn=Manager,dc=example,dc=com -f users.ldif -w redhat
$ ldapadd -x -D cn=Manager,dc=example,dc=com -f groups.ldif -w redhat
  1. 使用ldapsearch命令来验证users和groups创建是否成功
$ ldapsearch -x -D cn=Manager,dc=example,dc=com -b dc=example,dc=com -w redhat

OpenLDAP的操作

  1. 添加数据
 $ cat user3.ldif
dn: uid=testuser3,ou=users,dc=example,dc=com
uid: testuser3
cn: testuser3
objectClass: shadowAccount
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: posixAccount
userPassword: {SSHA}5rMM/3f8Ki13IyarGTtwzieoTu7KMgwc
shadowLastChange: 17016
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/testuser
sn: testuser3
mail: testuser@example.com
$ ldapadd -x -D 'cn=Manager,dc=example,dc=com' -w redhat -f user3.ldif
  1. 查询数据
$ ldapsearch -x -b 'dc=example,dc=com'
$ ldapsearch -x -b 'dc=example,dc=com' 'sn=testuser3'
  1. 修改数据
# 方法一:交互式
$ ldapmodify -x -D 'cn=Manager,dc=example,dc=com' -w redhat
dn: uid=testuser3,ou=users,dc=example,dc=com
changetype: modify
replace: sn
sn: Test User 3
-
add: description
description: add attribute

# 方法二:配置文件式
$ cat modify.ldif
dn: uid=testuser3,ou=users,dc=example,dc=com
changetype: modify
replace: sn
sn: Test User 3
-
delete: description
$ ldapmodify -x -D 'cn=Manager,dc=example,dc=com' -w redhat -f modify.ldif
  1. 删除数据
$ ldapdelete -x -D 'cn=Manager,dc=example,dc=com' -w redhat uid=testuser3,ou=users,dc=example,dc=com
  1. 数据导出
# 方法一:用查询导出
$ ldapsearch -x -b 'dc=example,dc=com' > export.ldif
# 方法二:导出命令
$ slapcat -l export.ldif

打开OpenLDAP日志

  1. 更新日志级别
$ cat loglevel.ldif 
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

$ ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif
$ systemctl restart slapd
  1. 修改rsyslog配置文件
$ touch /var/log/slapd.log
$ echo local4.* /var/log/slapd.log >> /etc/rsyslog.conf
$ systemctl restart rsyslog
  1. 查看openldap日志
$ tail -f /var/log/slapd.log

工具

  1. 浏览ldap目录列表的工具ldapbrowser
上一篇下一篇

猜你喜欢

热点阅读