一. server 端安装
yum -y install openldap-serversopenldap-clients nss-pam-ldapd
cp/usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl enable slapd
(需修改密码) slappasswd -s ldap@#123 // 每次生成的密码串不一样
或者 slappasswd -h {md5} -s "ldap@#123" // 生成md5 密码 ,ldap@#123 加密成固定密码串
{MD5}0YrHskgC54n3QqNNf7uBxg==
ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/set_rootpw.ldif // ldif 文件换成对应的密码
cat set_rootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {MD5}0YrHskgC54n3QqNNf7uBxg==
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
SET domain onladp db (管理员密码)
改set_domain.ldif文件中密码,跟上面密码一致
ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/set_domain.ldif
cat set_domain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=admin,dc=asiainfo,dc=com" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=asiainfo,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=asiainfo,dc=hadoop,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {MD5}0YrHskgC54n3QqNNf7uBxg==
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=admin,dc=asiainfo,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=asiainfo,dc=com" write by * read
ldapadd -x -D cn=admin,dc=asiainfo,dc=com -w ldap@#123 -f /home/ocdc/diff/create_basedomain.ldif
cat create_basedomain.ldif
dn: dc=asiainfo,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Server com
dc: asiainfo
dn: cn=admin,dc=asiainfo,dc=com
objectClass: organizationalRole
cn: admin
description: Directory admin
dn: ou=People,dc=asiainfo,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=asiainfo,dc=com
objectClass: organizationalUnit
ou: Group
测试能否连接到ldap server:
ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com'
ldapsearch -LLL -W -x -D "cn=admin,dc=asiainfo,dc=com" -b "dc=asiainfo,dc=com"
主从复制,主节点上执行如下命令:
ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/sync_provider_addMode.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ocdc/diff/sync_provider.ldif
cat sync_provider_addMode.ldif
# create new
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
cat sync_provider.ldif
# create new
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
从节点上执行如下命令:
ldapadd -Y EXTERNAL -H ldapi:/// -f/home/ocdc/diff/sync_consumer.ldif
cat sync_consumer.ldif
# create new
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
# LDAP server's URI
provider=ldap://oc-etl-data-new-060:389/
bindmethod=simple
# own domain name
binddn="cn=admin,dc=asiainfo,dc=com"
# directory manager's password
credentials=ldap@#123
searchbase="dc=asiainfo,dc=com"
# includes subtree
scope=sub
schemachecking=on
type=refreshAndPersist
# [retry interval] [retry times] [interval of re-retry] [re-retry times]
retry="30 5 300 3"
# replication interval
interval=00:00:05:00
ldap client 安装
yum -y install openldap-clients nss-pam-ldapd
authconfig--enableldap --enableldapauth --ldapserver=xxxx-NN-01:389,xxxx-NN-02:389--ldapbasedn="dc=asiainfo,dc=com" --enablemkhomedir --update
二 。常用维护命令
1) Ldap 中添加一个用户:
ldapadd -x-D cn=admin,dc=asiainfo,dc=com -W -f ldapuser.ldif
2) 查询ldap 中的用户:
ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com' // 不要管理员口令
ldapsearch -LLL -W -x -D "cn=admin,dc=asiainfo,dc=com" -b"dc=asiainfo,dc=com"
// 需要ldap 管理员口令才能查询, 也可以换成 w (小写)参数,后面指定管理员口令
ldapsearch -LLL -W -x -D "cn=admin,dc=asiainfo,dc=com" -b"dc=asiainfo,dc=com" -H "ldap://127.0.0.1"
// -H 参数指定 要查询的Ldap 服务器地址
3)删除ldap 中的一个用户 及 用户组:
ldapdelete -x -W -D 'cn=admin,dc=asiainfo,dc=com'"uid=redhat,ou=People,dc=asiainfo,dc=com"
ldapdelete -x -W -D 'cn=admin,dc=asiainfo,dc=com'"cn=redhat,ou=Group,dc=asiainfo,dc=com"
4)更改ldap 中某一个用户的口令:
ldappasswd -x -D "cn=manager,dc=asiainfo,dc=com" -w ldap123 "uid=asiainfo,ou=People,dc=asiainfo,dc=com" -s xxxx
说明: xxxx 为某个用户的新口令, -w(小写) 参数后面指定的是ldap 管理员密码
5) 更改 ldap 管理员的口令:
先查询 ldap 服务中的cn , dc 相关信息
ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b “cn=config” “(olcRootDN=*)” dn olcRootDN olcRootPW
slappasswd -s xxxxxx // 生成新密码的 加密串
替换 newpasswd.ldif 当中的加密串 , newpasswd.ldif 文件的内容如下
cat newpasswd.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {MD5}0YrHskgC54n3QqNNf7uBxg==
执行更改操作
ldapmodify -H ldapi:// -Y EXTERNAL -f /root/newpasswd.ldif
6)ldap 数据备份,迁移
ldapsearch -LLL -w 'ldap@#123' -x -D "cn=root,dc=asiainfo,dc=com" -b "dc=asiainfo,dc=com" >/root/ldapbak.ldif
修改ldapbak.ldif 数据,删除top 组织,scp 到新ldap 服务器中
导入到新ldap 数据库中
ldapadd -x -D "cn=root,dc=asiainfo,dc=com" -w ldap@#123 -f /home/ocdc/diff/ldapbak1115.ldif
cat ldapuser.ldif
# create new
# replace to your own domain name for "dc=***,dc=***" section
dn: uid=red,ou=People,dc=asiainfo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Red
sn: TEST
userPassword: {SSHA}y6mu044L1WYtDrEGFsqv7UmCWazCIqzx
loginShell: /bin/bash
uidNumber: 1602
gidNumber: 1602
homeDirectory: /ldapuser/red
dn: cn=red,ou=Group,dc=asiainfo,dc=com
objectClass: posixGroup
cn: Red
gidNumber: 1602
memberUid: red