wangbin
  • wangbin
  • 2020-08-16
  • IT

OpenLDAP(2):搭建phpLDAPadmin

一. 简介

上篇我们看到操作OpenLDAP数据库需要先写xxx.ldif,然后看情况用ldapadd、ldapmodify、ldapdelete命令,有些麻烦。

我们可以安装phpLDAPadmin简化这个操作,这儿记录下

二. 安装

install_phpldapadmin.sh

yum install -y phpldapadmin

这样就安装完成了

三. 配置

/etc/phpldapadmin/config.php

# 398行,默认是使用uid进行登录,我这里改为cn,也就是用户名
$servers->setValue('login','attr','cn');

# 460行,关闭匿名登录,否则任何人都可以直接匿名登录查看所有人的信息
$servers->setValue('login','anon_bind',false);

# 519行,设置用户属性的唯一性,这里我将cn,sn加上了,以确保用户名的唯一性
$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'));

四. 兼容php7

2021-4-21更新:epel源安装的phpldapadmin版本号为1.2.5,已经支持php7了,可以忽略这部分修改

phpldapadmin很久不更新了,只支持php5,我现在已经开始用php7了,需要修改一些地方兼容php7

/usr/share/phpldapadmin/lib/functions.php

# 54行,报错 Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in /usr/share/phpldapadmin/lib/functions.php on line 54
// function __autoload($className) { 
# 修改为
//自动加载类库
spl_autoload_register("my_autoload"); //PHP7.2开始必须这样写
//自动加载类库处理
function my_autoload($className) {

# 1083行,Deprecated: Function create_function() is deprecated in /usr/share/phpldapadmin/lib/functions.php on line 1083
# $CACHE[$sortby] = create_function('$a, $b',$code);
# 修改为
$CACHE[$sortby] = __create_function('$a, $b',$code);
# 然后下面新增方法
function __create_function($arg, $body) {
    static $cache = array();
    static $maxCacheSize = 64;
    static $sorter;

    if ($sorter === NULL) {
        $sorter = function($a, $b) {
            if ($a->hits == $b->hits) {
                return 0;
            }

            return ($a->hits < $b->hits) ? 1 : -1;
        };
    }

    $crc = crc32($arg . "\\x00" . $body);

    if (isset($cache[$crc])) {
        ++$cache[$crc][1];
        return $cache[$crc][0];
    }

    if (sizeof($cache) >= $maxCacheSize) {
        uasort($cache, $sorter);
        array_pop($cache);
    }

    $cache[$crc] = array($cb = eval('return 
function('.$arg.'){'.$body.'};'), 0);
    return $cb;
}

五. nginx配置

网上介绍的都是apache的配置,但是我一直用的nginx,这儿贴下我的配置

ldapadmin.conf

# ldapadmin.wangbin.io
server {

    listen       50081;
    listen       [::]:50081;
    listen       50443 ssl http2;
    listen       [::]:50443 ssl http2;

    server_name  ldapadmin.wangbin.io;

    # ssl
    ssl_certificate             /vps/save/certificate/acme/*.wangbin.io/fullchain.cer;
    ssl_certificate_key         /vps/save/certificate/acme/*.wangbin.io/*.wangbin.io.key;
    ssl_trusted_certificate     /vps/save/certificate/acme/*.wangbin.io/fullchain.cer;

    # ecc
    ssl_certificate             /vps/save/certificate/acme/*.wangbin.io_ecc/fullchain.cer;
    ssl_certificate_key         /vps/save/certificate/acme/*.wangbin.io_ecc/*.wangbin.io.key;

    # Basic HTTP authentication
    auth_basic                  "nginx basic http authentication for files.wangbin.io";
    auth_basic_user_file        /vps/save/certificate/htpasswd/http-htpasswd;

    # log
    access_log                  /vps/logs/nginx/today/wangbin.io/svn.wangbin.io/access-svn.wangbin.io.log wangbin;
    error_log                   logs/error.log;

    root         /usr/share/phpldapadmin/htdocs;
    index        index.html index.htm index.php;

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

    location ~* ^/(doc|logs|app|sys)/ {
        deny all;
    }

    location ~ .*\.(php|php5)?$ {
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # 禁止访问.svn目录,防止svn信息泄漏,必加项
    location ~ ^(.*)\/\.svn\/ {
        deny all;
    }

}

六. 安装最新版本phpLDAPadmin

https://github.com/leenooks/phpLDAPadmin

phpLDAPadmin的git库迁移到github了

2021-4-21日查看https://github.com/leenooks/phpLDAPadmin发现最新版本号1.2.6.2,而且是2020-9-23发布的

这个肯定没啥奇奇怪怪的兼容问题,尝试使用它

install_phpldapadmin.sh

cd ~
wget -O 1.2.6.2.zip https://codeload.github.com/leenooks/phpLDAPadmin/zip/refs/tags/1.2.6.2
unzip 1.2.6.2.zip 
rm -rf /usr/share/phpldapadmin
mv ~/phpLDAPadmin-1.2.6.2/ /usr/share/phpldapadmin/
mv /usr/share/phpldapadmin/config/config.php.example /usr/share/phpldapadmin/config/config.php

然后只修改/usr/share/phpldapadmin/config/config.php配置文件就可以了,按照上面的三.配置来就好

这个好,推荐用这个

七. 总结

https://ldapadmin.wangbin.io/

下篇介绍下ldapadmin的使用

参考:

  1. https://blog.csdn.net/weixin_41004350/article/details/89521170

  2. https://blog.csdn.net/rockstics/article/details/107545411