安装openldap,参考:
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
安装phpldapadmin
1.首先卸载掉老的phpldapadmin
sudo apt remove --purge phpldapadmin
2.安装
sudo apt-get install phpldapadmin
如果出现报错
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
http://master/phpldapadmin
那是phpldapadmin安装失败
有可能是apache2的80端口被nginx占用导致的,输出命令查看80端口的占用情况
sudo netstat -tulpn | grep :80
可以看到nginx占用了apache2的80端口,但是ldap又需要使用apache2
查看apache2的状态
/etc/init.d/apache2 reload
所以apache2服务是有问题的
关闭nginx
sudo service nginx stop
打开apache2
sudo service apache2 start
或者也可以修改apache2的默认端口
vim /etc/apache2/ports.conf
修改80成其他的,然后
vim /etc/apache2/sites-enabled/000-default.conf
修改 <VirtualHost *:80>
然后重启apache2
sudo service apache2 restart
重新安装phpldapadmin,正常安装
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
访问页面,成功
http://master/phpldapadmin
账号就是admin和刚刚安装ldap的时候设置的password
往ldap上导入os上的组织
可以选择自己新建ou,选择 Generic: Organisational Unit,新建Group和People两个ou
也可以使用命令批量导入os上的ou
首先安装迁移工具 migrationtools
sudo apt-get install migrationtools
修改配置
vim /etc/migrationtools/migrate_common.ph
将下面
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "padl.com"; # Default base $DEFAULT_BASE = "dc=padl,dc=com";
修改成
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "example.com"; # Default base $DEFAULT_BASE = "dc=example,dc=com";
参考了
https://www.cnblogs.com/hzw97/p/11592244.html#_lab2_3_0
生成文件模板
lintong@master:~/下载$ /usr/share/migrationtools/migrate_base.pl > ./linux_base.ldif
将模板中将ldap上已有的entry去掉,否则会导入失败
dn: dc=example,dc=com dc: example objectClass: top objectClass: domain
如下报错
adding new entry "dc=example,dc=com" ldap_add: Already exists (68)
去掉后再次导入,XXXXXX是bind_password
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -w XXXXXX -f ./linux_base.ldif
导入成功
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用户
cat /etc/passwd > ./people.txt /usr/share/migrationtools/migrate_passwd.pl ./people.txt ./people.ldif
迁移到ldap中
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -w XXXXXX -f ./people.ldif
去phpldapadmin上查看
导入os组
cat /etc/group > ./group.txt /usr/share/migrationtools/migrate_group.pl ./group.txt ./group.ldif
迁移到ldap中
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -w XXXXXX -f ./group.ldif
成功
ldap查询entry,-W是交互式输入密码,-w "密码"
ldapsearch -x -LLL -H ldap://master:389 -D "cn=admin,dc=example,dc=com" -W -b "dc=example,dc=com" -s base