首頁 > 軟體

OpenLDAP安裝及設定普通使用者修改自己密碼

2020-06-16 17:10:49

前言:
 在安裝使用、openldap的過程中踩過很多坑,有的是自己沒理解明白,有的是別人表述不明確,此次就從安裝開始,簡單許可權設定、以及雙主,後面包括與confluence、jira,gitlab的關聯~
一、安裝openldap
 此前編譯安裝過,踩過不少坑,最後還是選擇用yum安裝來的方便。
 `yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap`
 
 openldap後端的資料庫是Berkeley DB,所以這個也得安裝,當時編譯安裝時,對這個資料庫的版本有恨嚴格的要求,坑很大。。
 `yum install db4 db4-utils`


 雖說openldap已經提供了足夠的命令來建立,搜尋,修改資料,但是依然不及web頁面顯示來的直觀,此處我們使用phpldapadmin。
 ```
 wget http://sourceforge.net/projects/phpldapadmin/files/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.3.zip/download


 unzip phpldapadmin-1.2.3.zip
 cp -R phpldapadmin-1.2.3 /var/www/html/phpldapadmin
 cd /cd/www/html/phpldapadmin/config
 cp config.php.example config.php
 ```
 和大多數php應用一樣,得自己複製出一個組態檔。記得修改php的timezone喲。這也算是一個小坑。


 `
 yum install php php-ldap php-fpm nginx
 sed -i '/; date.timezone/a date.timezone =Asia/Shanghai' /etc/php.ini `
 下面是我使用的nginx的組態檔
 ```
 vim /etc/nginx/conf/phpldapadmin.conf
 server{
    listen      80;
    server_name  ldap.xxx.com;


    location / {
        index index.html index.php;
        root /var/www/html/phpldapadmin;


    if (!-e $request_filename) {
            rewrite ^/(.*)  /index.php?$1 last;
        }
    }

 


    location ~ .php$ {
        root /var/www/html/phpldapadmin;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }


 }
 ```
 接下來就啟動nginx、啟動php-fpm
 ```
 service nginx start
 service php-fpm start
 ```


 繼續設定openldap。網上有好多教學都是設定slapd.conf 檔案但是,yum安裝的預設/etc/openldap/下是沒有這個檔案的,因為新版的吧一個檔案分成了多個。不習慣的可以繼續設定原來的slapd.conf檔案,然後通過命令將其變成slapd.d/目錄下的多個組態檔。


 首先生成管理員密碼。
 slappasswd
 輸入兩次得到一個密碼,我的這個密碼是1234
 {SSHA}7Wi/7NzFL/b6y+a7jZsDos5ax3HK0gUZ
 修改資料庫組態檔,設定域名,密碼等
 ```
 vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif


 olcSuffix: dc=xxx,dc=com
 #這個主要設定目錄樹根的域名。
 oclRootDN: cn=admin,dc=xxx,dc=com
 #這個是設定管理員dn,xxx可以換成自己的域名~


 #然後在這歌組態檔的最後一行加入設定管理員密碼的條目~
 olcRootPW: {SSHA}7Wi/7NzFL/b6y+a7jZsDos5ax3HK0gUZ
 ```


2、指定監控許可權
```
 vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
 dn.base="cn=admin,dc=xxx,dc=com"
 #修改其末日域名
```
3、設定資料庫快取
```
 cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
 chown -R ldap:ldap /var/lib/ldap


 #測試組態檔是否有錯,得到`testing succeeded`表示沒問題
 slaptest -u
```
4、啟動openldap
 `service slapd start`


此時就可以存取phpldapadmin。web頁面了
使用者名稱:cn=admin,dc=ldap,dc=com
密碼:1234


 不過此處還有一坑,web頁面會有一個提示,然後沒有目錄樹的根,原因是根節點還沒有被建立。操作如下:
 ```
 vim base.ldif
 #以下為base.ldif內的內容
 dn: dc=xxx,dc=com
 o: ldap
 objectclass: dcObject
 objectclass: organization
 ```
 然後加入使用者
 `ldapmodify -x -D "cn=admin,dc=luojilab,dc=com" -W -f base.ldif`
 如果提示`adding new entry "dc=xxx,dc=com"`就表示成功了~

再存取web頁面就沒問題啦~~

openldap設定普通使用者修改自己密碼

當我們接入jira或者wiki等等,普通使用者肯定有修改密碼的需求,為了實現此功能,就得在openldap組態檔中加入許可權,允許普通使用者自己修改密碼。


前面已經做過的操作,此處不再說明。
修改slapd.conf檔案
```
#找到下面幾條,去掉前面的井號
modulepath /usr/lib/openldap
modulepath /usr/lib64/openldap
modeleloda ppolicy.la
```
在database config前面加上兩個欄位
```
access to attrs=userPassword
 by self write
 by anonymous auth
 by dn="cn=admin,dc=xxx,dc=com" write
 by * node


access to *
 by self write
 by dn="cn=admin,dc=xxx,dc=com" write
```
再組態檔末尾新增:
```
overlay ppolicy
ppolicy_default cn=Captain,ou=pwpolicies,dc=le,dc=com
```
然後重新生成資料庫組態檔
```
rm -rf /etc/openldap/slapd.d/*
[root@ll ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
[root@ll ~]# chown -R ldap.ldap /etc/openldap/*
[root@ll ~]# chown -R ldap.ldap /var/lib/ldap
[root@ll ~]# /etc/init.d/slapd restart
```

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-07/145436.htm


IT145.com E-mail:sddin#qq.com