參考:http://www.javashuo.com/article/p-zhrqehzq-nt.html
https://www.ilanni.com/?p=13775
openldap-server的數據必須用原配的Berkeley DB,不能使用mysql做爲後端數據庫
openldap的操做語法比較複雜,推薦使用phpldapadmin管理配置,同時也能夠用windows下ldapadmin程序進行配置php
系統centos7 64位
配置yum源html
wget http://mirrors.aliyun.com/repo/Centos-7.repo cp Centos-7.repo /etc/yum.repos.d/ cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.bak mv Centos-7.repo CentOS-Base.repo yum clean all yum makecache
關閉selinux和防火牆mysql
sed -i ‘/SELINUX/s/enforcing/disabled/’ /etc/selinux/config && setenforce 0&& systemctl disable firewalld.service && systemctl stop firewalld.service && shutdown -r now
環境初始化完畢後,咱們就能夠安裝OpenLDAP。linux
使用以下命令安裝OpenLDAP:sql
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
查看OpenLDAP版本,使用以下命令:數據庫
slapd -VV
OpenLDAP安裝完畢後,接下來咱們開始配置OpenLDAP。vim
OpenLDAP配置比較複雜牽涉到的內容比較多,接下來咱們一步一步對其相關的配置進行介紹。
注意:從OpenLDAP2.4.23版本開始全部配置數據都保存在/etc/openldap/slapd.d/中,建議再也不使用slapd.conf做爲配置文件。windows
設置OpenLDAP的管理員密碼:後端
slappasswd -s ******
上述加密後的字段保存下,等會咱們在配置文件中會使用到。centos
Vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif 修改olcDatabase={2}hdb.ldif文件,對於該文件增長一行 olcRootPW: {SSHA}o1bqtofUr95dkEDdXbAMAVPFSnNDU3+2,而後修改域信息: olcSuffix: dc=hbgd,dc=com olcRootDN: cn=Manager,dc=hbgd,dc=com
注意:其中cn=Manager中的Manager表示OpenLDAP管理員的用戶名,而olcRootPW表示OpenLDAP管理員的密碼。
修改olcDatabase={1}monitor.ldif文件,以下: vim /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif olcAccess: {0}to * by dn.base=」gidNumber=0+uidNumber=0,cn=peercred,cn=extern al,cn=auth」 read by dn.base=」cn=Manager,dc=hbgd,dc=com」 read by * none
注意:該修改中的dn.base是修改OpenLDAP的管理員的相關信息的。
驗證OpenLDAP的基本配置,使用以下命令:
slaptest -u
經過上圖,咱們能夠很明顯的看出OpenLDAP的基本配置是沒有問題。
啓動OpenLDAP服務,使用以下命令:
systemctl enable slapd systemctl start slapd systemctl status slapd
OpenLDAP默認監聽的端口是389,下面咱們來看下是否是389端口,以下:
netstat -antup | grep 389
經過上圖,咱們能夠很明顯的看出OpenLDAP確實是監聽的是389端口。
OpenLDAP默認使用的數據庫是BerkeleyDB,如今來開始配置OpenLDAP數據庫,使用以下命令:
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap -R /var/lib/ldap chmod 700 -R /var/lib/ldap ll /var/lib/ldap/
注意:/var/lib/ldap/就是BerkeleyDB數據庫默認存儲的路徑。
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
migrate_common.ph文件主要是用於生成ldif文件使用,修改migrate_common.ph文件,以下:
vim /usr/share/migrationtools/migrate_common.ph +71 $DEFAULT_MAIL_DOMAIN = 「hbgd.com」; $DEFAULT_BASE = 「dc=hbgd,dc=com」; $EXTENDED_SCHEMA = 1;
到此OpenLDAP的配置就已經所有完畢,下面咱們來開始添加用戶到OpenLDAP中。
默認狀況下OpenLDAP是沒有普通用戶的,可是有一個管理員用戶。管理用戶就是前面咱們剛剛配置的root。
如今咱們把系統中的用戶,添加到OpenLDAP中。爲了進行區分,咱們如今新加兩個用戶ldapuser1和ldapuser2,和兩個用戶組ldapgroup1和ldapgroup2,以下:
添加用戶組,使用以下命令:
groupadd ldapgroup1 groupadd ldapgroup2
添加用戶並設置密碼,使用以下命令
useradd -g ldapgroup1 ldapuser1 useradd -g ldapgroup2 ldapuser2 echo ‘123456’ | passwd –stdin ldapuser1 echo ‘123456’ | passwd –stdin ldapuser2
把剛剛添加的用戶和用戶組提取出來,這包括該用戶的密碼和其餘相關屬性,以下
grep 「:10[0-9][0-9]」 /etc/passwd > /root/users grep 「:10[0-9][0-9]」 /etc/group > /root/groups
根據上述生成的用戶和用戶組屬性,使用migrate_passwd.pl文件生成要添加用戶和用戶組的ldif,以下:
/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif /usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif cat users.ldif cat groups.ldif
注意:後續若是要新加用戶到OpenLDAP中的話,咱們能夠直接修改users.ldif文件便可。
配置openldap基礎的數據庫,以下:
cat > /root/base.ldif << EOF dn: dc=hbgd,dc=com o: hbgd com dc: hbgd objectClass: top objectClass: dcObject objectclass: organization dn: cn=Manager,dc=hbgd,dc=com cn: Manager objectClass: organizationalRole description: Directory Manager dn: ou=People,dc=hbgd,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=hbgd,dc=com ou: Group objectClass: top objectClass: organizationalUnit EOF
導入基礎數據庫,使用以下命令:
ldapadd -x -w 「xxxxxx」 -D 「cn=Manager,dc=hbgd,dc=com」 -f /root/base.ldif
導入用戶到數據庫,使用以下命令:
ldapadd -x -w 「xxxxx」 -D 「cn=Manager,dc=hbgd,dc=com」 -f /root/users.ldif
導入用戶組到數據庫,使用以下命令
ldapadd -x -w 「xxxxx」 -D 「cn=Manager,dc=hbgd,dc=com」 -f /root/groups.ldif
儘管咱們已經把用戶和用戶組信息,導入到OpenLDAP數據庫中了。但實際上目前OpenLDAP用戶和用戶組之間是沒有任何關聯的。
若是咱們要把OpenLDAP數據庫中的用戶和用戶組關聯起來的話,咱們還須要作另外單獨的配置。
如今咱們要把ldapuser1用戶加入到ldapgroup1用戶組,須要新建添加用戶到用戶組的ldif文件,以下:
cat > add_user_to_groups.ldif << 「EOF」 dn: cn=ldapgroup1,ou=Group,dc=hbgd,dc=com changetype: modify add: memberuid memberuid: ldapuser1 EOF
執行以下命令:
ldapadd -x -w 「xxxxxx」 -D 「cn=Manager,dc=hbgd,dc=com」 -f /root/add_user_to_groups.ldif
查詢添加的OpenLDAP用戶組信息,以下:
ldapsearch -LLL -x -D ‘cn=Manager,dc=hbgd,dc=com’ -w 「xxxxx」 -b ‘dc=hbgd,dc=com’ ‘cn=ldapgroup1’
經過上圖,咱們能夠很明顯的看出ldapuser1用戶已經加入到ldapgroup1用戶組了。
默認狀況下OpenLDAP是沒有啓用日誌記錄功能的,可是在實際使用過程當中,咱們爲了定位問題須要使用到OpenLDAP日誌。
新建日誌配置ldif文件,以下:
cat > /root/loglevel.ldif << 「EOF」 dn: cn=config changetype: modify replace: olcLogLevel olcLogLevel: stats EOF
導入到OpenLDAP中,並重啓OpenLDAP服務,以下:
ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif systemctl restart slapd
修改rsyslog配置文件,並重啓rsyslog服務,以下:
cat >> /etc/rsyslog.conf << 「EOF」 local4.* /var/log/slapd.log EOF systemctl restart rsyslog
查看OpenLDAP日誌,以下:
tail -f /var/log/slapd.log
首先安裝Apache和PHP:
[root@localhost ~]# yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
而後安裝phpldapadmin:
[root@localhost ~]# yum -y install epel-release [root@localhost ~]# yum --enablerepo=epel -y install phpldapadmin
修改配置文件
[root@localhost ~]# vim /etc/phpldapadmin/config.php #397行取消註釋,398行添加註釋 $servers->setValue('login','attr','dn'); // $servers->setValue('login','attr','uid'); [root@localhost ~]# vim /etc/httpd/conf.d/phpldapadmin.conf // 修改配置 <IfModule mod_authz_core.c> # Apache 2.4 Require local #添加一行內容,指定可訪問的ip段(雖然我也不知道爲何,但不填不能運行這個管理工具,我就直接寫的本地ip) Require ip 172.31.101.110 </IfModule>
設置開機自啓並啓動Apache:
[root@localhost ~]# systemctl enable httpd [root@localhost ~]# systemctl start httpd
瀏覽器訪問phpldapadmin:
http://(localhost或服務器地址)/phpldapadmin/
用戶名:cn=Manager,dc=hbgd,dc=com
密碼:設定的管理員密碼