LDAP 安装部署以及基础使用

因工作需求需要使用ldap管理用户权限,在踩了一系列坑之后,总结了一些流畅的文档,希望可以帮到和曾经的我一样迷茫的人。

基础环境:Ubuntu 18.04

一、安装

root@cky:~# apt install slapd ldap-utils -y

Administrator password: 123456
Confirm password: 123456

安装包版本

root@cky:~/ldap# dpkg -l slapd ldap-utils
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============================================-============================-============================-===================================================================================================
ii ldap-utils 2.4.45+dfsg-1ubuntu1.10 amd64 OpenLDAP utilities
ii slapd 2.4.45+dfsg-1ubuntu1.10 amd64 OpenLDAP server (slapd)

二、配置

配置组织名称,输入/验证在安装期间创建的管理员密码。完成后,选择MDB作为数据库后端,然后在清除slapd时选择No以删除数据库。最后,选择Yes以移动旧数据库,完成安装和配置。

root@cky:~# dpkg-reconfigure slapd

Omit OpenLDAP server configuration?  No
DNS domain name: company.com
Organization name: company
Administrator password: 123456
Confirm password: 123456
Database backend to use: MDB
Do you want the database to be removed when slapd is purged? No
Move old database? Yes

验证一下

通过LDAP协议(仅列出dn),这是slapd-config DIT的样子:

root@cky:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=config dn: cn=module{0},cn=config dn: cn=schema,cn=config dn: cn={0}core,cn=schema,cn=config dn: cn={1}cosine,cn=schema,cn=config dn: cn={2}nis,cn=schema,cn=config dn: cn={3}inetorgperson,cn=schema,cn=config dn: olcBackend={0}mdb,cn=config dn: olcDatabase={-1}frontend,cn=config dn: olcDatabase={0}config,cn=config dn: olcDatabase={1}mdb,cn=config

条目说明:

  • cn = config:全局设置
  • cn = module {0},cn = config:动态加载的模块
  • cn = schema,cn = config:包含硬编码的系统级架构
  • cn = {0} core,cn = schema,cn = config:硬编码核心架构
  • cn = {1} cosine,cn = schema,cn = config:余弦模式
  • cn = {2} nis,cn = schema,cn = config:nis模式
  • cn = {3} inetorgperson,cn = schema,cn = config:inetorgperson模式
  • olcDatabase = {-1} frontend,cn = config:前端数据库,其他数据库的默认设置
  • olcDatabase = {0} config,cn = config:slapd配置数据库(cn = config)
  • olcDatabase = {1} mdb,cn = config:您的数据库实例(dc = example,dc = com)

这是dc = company,dc = com DIT的样子:

root@cky:~# ldapsearch -x -LLL -H ldap:/// -b dc=company,dc=com dn
dn: dc=company,dc=com dn: cn=admin,dc=company,dc=com

查询当前用户

root@cky:~# ldapwhoami -x
anonymous
root@cky:~# ldapwhoami -x -D cn=admin,dc=company,dc=com -W
Enter LDAP Password: 123456
dn:cn=admin,dc=company,dc=com

填充一波数据库

创建ldif文件

root@cky:~/ldap# pwd
/root/ldap
root@cky:~/ldap# cat ldap_data.ldif
dn: ou=Dev,dc=company,dc=com
objectClass: organizationalUnit
ou: Dev dn: ou=Groups,dc=company,dc=com
objectClass: organizationalUnit
ou: Groups dn: cn=miners,ou=Groups,dc=company,dc=com
objectClass: posixGroup
cn: miners
gidNumber: 5000 dn: uid=zhangsan,ou=Dev,dc=company,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: zhangsan
sn: Zhang
givenName: San
cn: zhangsan
displayName: ZS
uidNumber: 10001
gidNumber: 10001
userPassword: zspwd
gecos: zhangsan
loginShell: /bin/bash
homeDirectory: /mnt/zs

使用以下命令将文件内容添加到LDAP:

root@cky:~/ldap# ldapadd -x -D cn=admin,dc=company,dc=com -W -f ldap_data.ldif
Enter LDAP Password: 123456
adding new entry "ou=Dev,dc=company,dc=com" adding new entry "ou=Groups,dc=company,dc=com" adding new entry "cn=miners,ou=Groups,dc=company,dc=com" adding new entry "uid=zhangsan,ou=Dev,dc=company,dc=com"

咱们来查一下:

# 查一个
root@cky:~/ldap# ldapsearch -x -b "uid=zhangsan,ou=Dev,dc=company,dc=com" root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com 'uid=zhangsan' ou Dev # 查多个
root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com ou DEV

此时我们可以看到,用户已添加成功。

此时,ldap已安装部署完成。

三、基础使用方法

添加用户:

root@cky:~/ldap# cat add_lisi.ldif
dn: uid=lisi,ou=Dev,dc=company,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: lisi
sn: Li
givenName: Si
cn: lisi
displayName: LS
uidNumber: 10002
gidNumber: 10002
userPassword: lspwd
gecos: lisi
loginShell: /bin/bash
homeDirectory: /mnt/ls root@cky:~/ldap# ldapadd -x -D cn=admin,dc=company,dc=com -W -f add_lisi.ldif
Enter LDAP Password: 123456
adding new entry "uid=lisi,ou=Dev,dc=company,dc=com"

查询用户:

root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com 'uid=lisi' ou Dev
dn: uid=lisi,ou=Dev,dc=company,dc=com

修改用户信息:

root@cky:~/ldap# cat modify_lisi.ldif
dn: uid=lisi,ou=Dev,dc=company,dc=com
changetype: modify
replace: displayName
displayName: LiSi root@cky:~/ldap# ldapmodify -x -D 'cn=admin,dc=company,dc=com' -W -f modify_lisi.ldif
Enter LDAP Password:
modifying entry "uid=lisi,ou=Dev,dc=company,dc=com"

删除用户:

root@cky:~/ldap# ldapdelete -x -D 'cn=admin,dc=company,dc=com' -w 123456 -r "uid=lisi,ou=Dev,dc=company,dc=com"
root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com 'uid=lisi' ou Dev
root@cky:~/ldap#

更改rootDN密码:

  • 首先,运行 slappasswd 获取所需的新密码的哈希值:
root@cky:~/ldap# slappasswd
New password: 654321
Re-enter new password: 654321
{SSHA}PkliLbd6Dih/H34i626AA22Eok1vdG76
  • 准备一个 changerootpw.ldif 具有以下内容的文件:
root@cky:~/ldap# cat changerootpw.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}PkliLbd6Dih/H34i626AA22Eok1vdG76
  • 最后,运行 ldapmodify 命令:
root@cky:~/ldap# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f changerootpw.ldif
modifying entry "olcDatabase={1}mdb,cn=config"

配置日志

创建logging.ldif具有以下内容的文件:

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

修改

root@cky_dev:~/cky/ldap# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif
modifying entry "cn=config"

phpLDAPadmin

如果是和我一样的初学者,建议搭起来看一下效果,会帮助你加深对ldap的理解。

一、安装

安装PHP和Apache Web服务器:

# 该存储库包含迄今为止的所有发行版本的PHP。
root@cky:~# add-apt-repository ppa:ondrej/php
root@cky:~# apt update root@cky:~# apt install php7.0 php7.0-xml php7.0-ldap php7.0-cgi apache2 libapache2-mod-php7.0 php-mbstring php-common -y

启用php7.0-cgi扩展:

root@cky_test01:~# a2enmod  php7.0
root@cky_test01:~# a2enconf php7.0-cgi
root@cky_test01:~# systemctl reload apache2

安装phpLDAPadmin

root@cky_test01:~# apt -y install phpldapadmin

查看一下版本

root@cky:~# dpkg -l phpldapadmin
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============================================-============================-============================-===================================================================================================
ii phpldapadmin 1.2.2-6ubuntu1.1 all web based interface for administering LDAP servers

就这里,php版本和phpLDAPadmin版本对应的坑就坑了我很久,别的版本我不太清楚,就我上面的版本肯定是没问题的。

二、配置

修改phpLDAPadmin配置:

root@cky:~# vim /etc/phpldapadmin/config.php

286 $servers->setValue('server','name','company LDAP Server');

300 $servers->setValue('server','base',array('dc=company,dc=com'));

326 $servers->setValue('login','bind_id','cn=admin,dc=company,dc=com');

修改/etc/apache2/conf-enabled/phpldapadmin.conf上的访问权限,以允许仅从你信任的子网进行访问:

# 大概在20行的位置,放行了自己就行

Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168.1.0/24

重启apache2

root@cky_test01:~# systemctl restart apache2

防火墙放行

root@cky:~# ufw allow ldap
Rules updated
Rules updated (v6) # 测一下
root@cky:~# ldapwhoami -H ldap:// -x
anonymous

三、访问

现在,登录访问一下phpldapadmin

http://xxx.xxx.xxx.xxx/phpldapadmin/

额外赠送一个小知识:在已安装的PHP版本之间切换

有两种方法:Apache2、CLI

Apache2

root@cky_test01:~# cd /etc/apache2/
root@cky_test01:/etc/apache2# ls -l mods-*/*php*
-rw-r--r-- 1 root root 867 Jan 12 06:03 mods-available/php5.6.conf
-rw-r--r-- 1 root root 102 Jan 12 06:03 mods-available/php5.6.load
-rw-r--r-- 1 root root 855 Oct 7 11:24 mods-available/php7.2.conf
-rw-r--r-- 1 root root 102 Oct 7 11:24 mods-available/php7.2.load
lrwxrwxrwx 1 root root 29 Dec 20 20:59 mods-enabled/php7.2.conf -> ../mods-available/php7.2.conf
lrwxrwxrwx 1 root root 29 Dec 20 20:59 mods-enabled/php7.2.load -> ../mods-available/php7.2.load # 禁用
root@cky_test01:/etc/apache2# a2dismod php7.2
root@cky_test01:/etc/apache2# a2disconf php7.2-cgi
# 启用
root@cky_test01:/etc/apache2# a2enmod php5.6
root@cky_test01:/etc/apache2# a2disconf php5.6-cgi root@cky_test01:/etc/apache2# systemctl restart apache2

CLI

root@cky_test01:/etc/apache2# update-alternatives --set php /usr/bin/php5.6
update-alternatives: using /usr/bin/php5.6 to provide /usr/bin/php (php) in manual mode # 或者 root@cky_test01:/etc/apache2# update-alternatives --config php
There are 2 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/php7.2 72 auto mode
* 1 /usr/bin/php5.6 56 manual mode
2 /usr/bin/php7.2 72 manual mode Press <enter> to keep the current choice[*], or type selection number:

完整的 LDAP + phpLDAPadmin安装部署流程 (ubuntu18.04)的更多相关文章

  1. OpenStack Keystone安装部署流程

    之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...

  2. Python web项目Django部署在Ubuntu18.04腾讯云主机上

    Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04 材料准备 准备一个Django项目 准备一台Ubuntu18.04的主机 ssh连接到主机(腾 ...

  3. Janus安装教程,ubuntu18.04系统

    Janus安装教程,ubuntu18.04系统     本文介绍Jansu如何安装,操作系统为Ubuntu 18.04.    (1)安装git 执行命令:“sudo apt-get install ...

  4. LDAP + Samba 安装配置流程

    LDAP + Samba 安装配置 基础环境:Ubuntu18.04 安装samba root@cky:~# apt install samba smbldap-tools -y 查看版本 root@ ...

  5. GeoServer安装部署流程

    1.双击geoserver-2.13.0.exe进行安装,点击Next进行下一步 2.GeoServer遵循GPL许可,点击I agree继续 3.选择要安装的程序文件目录,点击Next继续 4.点击 ...

  6. Win10 安装 Linux子系统 Ubuntu18.04 / Kali Linux 的体验

    汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#linux 几年前就看到新闻,今天周末,突发奇想,家里电脑安装下子系统不就不用安装开发的那些环 ...

  7. VirtualBox安装部署的Ubuntu16.04的步骤

    1.下载ubuntu16.04镜像 http://cn.ubuntu.com/download/ 以及虚拟机软件VirtualBox https://www.virtualbox.org/wiki/D ...

  8. Nginx安装教程,ubuntu18.04

    本文介绍Nginx如何安装,操作系统为Ubuntu 18.04.   一.安装 (1)安装git 执行命令:“sudo apt-get install git”. (2)安装aptitude 执行命令 ...

  9. OpenStack Swift集群部署流程与简单使用

    之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...

随机推荐

  1. 数据结构(Java语言描述)-第一章:概述

    第一章 概述 1.0 序言 自己为啥要学数据结构嘞,我觉得主要有以下三个原因: 前段时间在看并发编程时,发现aqs,corrunthashmap等底层都用到了数据结构,主要的有队列,还有链表,学习数据 ...

  2. Thank in Java

    Think in Java 2.一切都是对象 2.1 引用操作对象 Java 中一切都是对象,因此可以采用单一固定得语法. 操作对象得标识符实际上是对对象得一个 "引用"refer ...

  3. Java排序算法(一)冒泡排序

    一.测试类SortTest  import java.util.Arrays; public class SortTest { private static final int L = 20; pub ...

  4. linux(11)配置环境变量

    前言 在自定义安装软件的时候,经常需要配置环境变量,下面进行详细解析 & nbsp; 环境变量配置文件 用户 配置文件 系统环境 /ect/profile /etc/bashrc /etc/e ...

  5. (史上最全)SNP位点与转录因子结合特异性数据库:GVATdb

    众所周知,全基因组关联分析(GWAS)发现的很多变异位点基本为非编码,这些变异位点1)要么调控基因表达(eQTL); 2)要么影响增强子活性; 3)要么影响转录因子(TF)结合特异性; 4)要么啥也不 ...

  6. 加快你ROS安装的一篇文章

    前言: 首先ROS大家应该比较熟悉了哈,如果需要补充一下请看我之前的这篇文章 <嵌入式的我们为什么要学ROS>,对于嵌入式来说ROS是一个很好的进阶方向,所以如何快速的安装一个ROS到我们 ...

  7. 数理统计7:矩法估计(MM)、极大似然估计(MLE),定时截尾实验

    在上一篇文章的最后,我们指出,参数估计是不可能穷尽讨论的,要想对各种各样的参数作出估计,就需要一定的参数估计方法.今天我们将讨论常用的点估计方法:矩估计.极大似然估计,它们各有优劣,但都很重要.由于本 ...

  8. 2019牛客暑期多校训练营(第一场)H XOR(线性基)

    题意:给你n个数字,然后让你求所有满足异或和为0的子集的大小之和. 先对n个数求线性基,设线性基大小为r,可以分别计算线性基内数的贡献和线性基外数的贡献 1.线性基外:共n-r个数,枚举每个数x,将线 ...

  9. HDU 3449 依赖背包

    这道题虽然水水的,但是还是成功地给我增加了10多个WA. 最开始拿着题,一看,依赖背包嘛~直接DFS树形DP嗨起来,甚至连内存都没有算一下,3MLE: 然后又仔细看了一下题,没有必要用树形背包来做嘛, ...

  10. Little Difference Gym - 101612L 思维

    题意: 给你一个数n,你需要输出它可以由那几个数相乘构成,我们设可以由x个数构成,这x个数中最小值为minn,最大值为maxx,那么要求maxx-minn<=1 问你满足上面要求的情况有多少种. ...