tonglin0325的个人主页

Ubuntu16.04安装openldap和phpldapadmin

安装openldap,参考:

1
2
3
https://www.alibabacloud.com/blog/how-to-install-openldap-and-phpldapadmin-on-ubuntu-16-04_594318
https://www.cnblogs.com/hzw97/p/11592244.html#_lab2_3_0

先卸载干净

1
2
sudo apt remove --purge slapd ldap-utils

再安装

1
2
sudo apt-get install slapd ldap-utils

设置管理员密码,直接确定,后面配置admin的时候会再次配置

配置ldap admin账号密码

1
2
sudo dpkg-reconfigure slapd

配置dc

组织名

设置admin账号密码

database选择MDB

查看ldap状态

1
2
sudo systemctl status slapd

 

安装phpldapadmin

1.首先卸载掉老的phpldapadmin

1
2
sudo apt remove --purge phpldapadmin

2.安装

1
2
sudo apt-get install phpldapadmin

3.修改config.php

1
2
3
4
5
sudo vim /etc/phpldapadmin/config.php

$servers->setValue('server','base',array('dc=hadoop,dc=com'));
$servers->setValue('login','bind_id','cn=admin,dc=hadoop,dc=com');

 

如果出现报错

1
2
3
4
5
Conf phpldapadmin disabled.
apache2_invoke postrm: Disable configuration phpldapadmin.conf
apache2.service is not active, cannot reload.
invoke-rc.d: initscript apache2, action "reload" failed

 

然后访问页面,出现的是404

1
2
http://master/phpldapadmin

那是phpldapadmin安装失败

有可能是apache2的80端口被nginx占用导致的,输出命令查看80端口的占用情况

1
2
sudo netstat -tulpn | grep :80

 可以看到nginx占用了apache2的80端口,但是ldap又需要使用apache2

 

 

 查看apache2的状态

1
2
/etc/init.d/apache2 reload

 

所以apache2服务是有问题的

关闭nginx

1
2
sudo service nginx stop

打开apache2

1
2
sudo service apache2 start

 

或者也可以修改apache2的默认端口

1
2
vim /etc/apache2/ports.conf

修改80成其他的,然后

1
2
vim /etc/apache2/sites-enabled/000-default.conf

修改 <VirtualHost *:80>

然后重启apache2

1
2
sudo service apache2 restart

重新安装phpldapadmin,正常安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apt-get install phpldapadmin
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
gimp-data gimp-help-common gimp-help-en lame libamd2.4.1 libbabl-0.1-0 libcamd2.4.1 libccolamd2.9.1 libcholmod3.0.6
libgegl-0.3-0 libgimp2.0 libjavascriptcoregtk-1.0-0 libqgsttools-p1 libqt4-svg libqt5multimedia5-plugins
libqt5multimediawidgets5 libumfpack5.7.1 libwebkitgtk-1.0-0 libwebkitgtk-1.0-common
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
phpldapadmin
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 0 B/727 kB 的归档。
解压缩后会消耗 5,104 kB 的额外空间。
正在预设定软件包 ...
正在选中未选择的软件包 phpldapadmin。
(正在读取数据库 ... 系统当前共安装有 288553 个文件和目录。)
正准备解包 .../phpldapadmin_1.2.2-5.2ubuntu2.1_all.deb ...
正在解包 phpldapadmin (1.2.2-5.2ubuntu2.1) ...
正在设置 phpldapadmin (1.2.2-5.2ubuntu2.1) ...

Creating config file /etc/phpldapadmin/config.php with new version
apache2_invoke: Enable configuration phpldapadmin.conf

访问页面,成功

1
2
http://master/phpldapadmin

 

账号就是admin和刚刚安装ldap的时候设置的password

往ldap上导入os上的组织

可以选择自己新建ou,选择 Generic: Organisational Unit,新建Group和People两个ou

 

也可以使用命令批量导入os上的ou

首先安装迁移工具 migrationtools

1
2
sudo apt-get install migrationtools

修改配置

1
2
vim /etc/migrationtools/migrate_common.ph

将下面

1
2
3
4
5
6
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "padl.com";

# Default base
$DEFAULT_BASE = "dc=padl,dc=com";

修改成

1
2
3
4
5
6
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "example.com";

# Default base
$DEFAULT_BASE = "dc=example,dc=com";

参考了

1
2
https://www.cnblogs.com/hzw97/p/11592244.html#_lab2_3_0

 生成文件模板

1
2
lintong@master:~/下载$ /usr/share/migrationtools/migrate_base.pl > ./linux_base.ldif

将模板中将ldap上已有的entry去掉,否则会导入失败

1
2
3
4
5
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain

如下报错

1
2
3
adding new entry "dc=example,dc=com"
ldap_add: Already exists (68)

去掉后再次导入,XXXXXX是bind_password

1
2
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -w XXXXXX -f ./linux_base.ldif

 导入成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
adding new entry "ou=Protocols,dc=example,dc=com"

adding new entry "nisMapName=netgroup.byuser,dc=example,dc=com"

adding new entry "ou=Services,dc=example,dc=com"

adding new entry "ou=Networks,dc=example,dc=com"

adding new entry "ou=People,dc=example,dc=com"

adding new entry "nisMapName=netgroup.byhost,dc=example,dc=com"

adding new entry "ou=Rpc,dc=example,dc=com"

adding new entry "ou=Netgroup,dc=example,dc=com"

adding new entry "ou=Group,dc=example,dc=com"

adding new entry "ou=Mounts,dc=example,dc=com"

adding new entry "ou=Aliases,dc=example,dc=com"

adding new entry "ou=Hosts,dc=example,dc=com"

 去phpldapadmin上查看

 导入os用户,/etc/passwd文件中记录了linux上所有的os用户

1
2
3
cat /etc/passwd > ./people.txt
/usr/share/migrationtools/migrate_passwd.pl ./people.txt ./people.ldif

迁移到ldap中

1
2
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -w XXXXXX -f ./people.ldif

 去phpldapadmin上查看

导入os组

1
2
3
cat /etc/group > ./group.txt
/usr/share/migrationtools/migrate_group.pl ./group.txt ./group.ldif

 迁移到ldap中

1
2
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -w XXXXXX -f ./group.ldif

 成功

 ldap查询entry,-W是交互式输入密码,-w “密码”

1
2
ldapsearch -x -LLL -H ldap://master:389 -D "cn=admin,dc=example,dc=com" -W -b "dc=example,dc=com"  -s base

 

 

ldap的备份和迁移参考:How To Backup and Restore OpenLDAP