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配置文件就可以了,按照上面的三.配置来就好
这个好,推荐用这个
七. 总结
下篇介绍下ldapadmin的使用
参考: