#!/bin/bash ######!/bin/bash ####systemctl stop slapd ####rm -rf /var/lib/ldap/* ####rm -rf /etc/openldap/* ####cp -r /opt/openldap/* /etc/openldap/ ####/opt/openldap 目录中保存的刚安装openldap服务后目录中备份文件 ####chown -R ldap:ldap /etc/openldap yum install -y openldap openldap-servers openldap-clients cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown -R ldap:ldap /etc/openldap chown -R ldap:ldap /var/lib/ldap systemctl start slapd systemctl enable slapd ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn mkdir -p /root/openldap ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW LDAP_Root_DN='cn=root,dc=gwmedc,dc=com' LDAP_Root_PW=`slappasswd -s root@pw` cat < /root/openldap/rootpw.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: ${LDAP_Root_PW} - replace: olcRootDN olcRootDN: ${LDAP_Root_DN} EOF ldapadd -Y EXTERNAL -H ldapi:/// -f /root/openldap/rootpw.ldif ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW LDAP_BASE_DN='dc=gwmedc,dc=com' cat < /root/openldap/dc.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="${LDAP_Root_DN}" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: ${LDAP_BASE_DN} EOF ldapadd -Y EXTERNAL -H ldapi:/// -f /root/openldap/dc.ldif cat < /root/openldap/acl.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: to attrs=userPassword,shadowLastChange by self write by dn="cn=root,${LDAP_BASE_DN}" write by anonymous auth by * none olcAccess: to * by self read by dn="cn=root,${LDAP_BASE_DN}" write by * none EOF ldapadd -Y EXTERNAL -H ldapi:/// -f /root/openldap/acl.ldif cat < /root/openldap/memberof.ldif # Load memberof module dn: cn=module{0},cn=config objectClass: olcModuleList objectclass: top olcModuleLoad: memberof # Backend memberOf overlay dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcMemberOf olcOverlay: {0}memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupofnames olcMemberOfMemberAD: member #olcMemberOfGroupOC: groupOfUniqueNames #olcMemberOfMemberAD: uniqueMember olcMemberOfMemberOfAD: memberof EOF ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /root/openldap/memberof.ldif slapcat -n 0 | grep olcModuleLoad cat < /root/openldap/organization.ldif dn: ${LDAP_BASE_DN} objectClass: top objectClass: dcObject objectClass: organization o: Gwm dn: ou=people,${LDAP_BASE_DN} objectClass: organizationalUnit ou: People dn: ou=group,${LDAP_BASE_DN} objectClass: organizationalUnit ou: Group EOF ldapadd -x -D cn=root,dc=gwmedc,dc=com -w root@pw -f /root/openldap/organization.ldif LDAP_USER_PW=`slappasswd -s sdj` #Base DN cat < /root/openldap/user.ldif dn: uid=sdj,ou=people,${LDAP_BASE_DN} cn: sdj givenName: sdj sn: sdj uid: sdj uidNumber: 10001 gidNumber: 10001 homeDirectory: /home/sdj mail: sdj@gwmedc.com objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person loginShell: /bin/bash userPassword: ${LDAP_USER_PW} EOF ldapadd -x -D cn=root,dc=gwmedc,dc=com -w root@pw -f /root/openldap/user.ldif cat < /root/openldap/group.ldif dn: cn=user,ou=group,${LDAP_BASE_DN} #objectClass: groupOfUniqueNames objectClass: groupofnames cn: user description: All users member: uid=sdj,ou=people,${LDAP_BASE_DN} EOF ldapadd -x -D cn=root,dc=gwmedc,dc=com -w root@pw -f /root/openldap/group.ldif ldapsearch -x -LLL -D cn=root,dc=gwmedc,dc=com -w root@pw -b uid=sdj,ou=people,dc=gwmedc,dc=com dn memberof