之前看了看openldap的文章,能用,但是不太好用。包括安装,部署以及web页面phpadminldap的安装,环境比较麻烦。也找了找apacheDS ldap的文章,真心没多少人有写,国人好像也没怎么用,个人使用觉得apacheDS确实比openldap好用一点
下面来说说apacheds与openldap的比较
1、apacheDS ldap 所需的服务说明
JDK:Java 语言的软件开发工具包,用户运行apacheds服务
apacheDS:ldap服务端
ApacheDirectoryStudio:ldap客户端,用来管理apacheds服务
2、界面
apacheds较为清爽,apacheds有一个客户端管理软件叫做ApacheDirectoryStudio
下载地址:http://directory.apache.org/studio/
3、安装
apacheds简单,ApacheDirectoryStudio客户端配置,不需要第三方的管理web页面,相对openldap的phpadminldap就方便很多
4、备份和还原
备份方面openldap和apacheds都差不多,基本上都是导出ldif文件的方式
还原的话apacheds相对方便一点,客户端插件有一个import的功能,直接把备份出来的文件进行倒入即可
5、创建用户 && 创建组 && 加入组
手动添加
ldif添加
6、认证
apacheds 和 openldap 没什么区别
环境:
1、安装jdk及添加系统变量
tar zxf jdk-8u201-linux-x64.tar.gz -C /usr/local/
vim /etc/profile && source /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2、安装 apacheds
解压apacheds
[root@server opt]# tar zxf apacheds-2.0.0.AM26.tar.gz -C /opt/
启动apacheds
[root@server opt]# /opt/apacheds-2.0.0.AM26/bin/apacheds.sh start
Using ADS_HOME: /opt/apacheds-2.0.0.AM26
Using JAVA_HOME: /usr/local/jdk1.8.0_241
Starting ApacheDS instance 'default'...
[root@server opt]#
安装好了,是不是很简单,等下通过ApacheDirectoryStudio配置即可。
1、将ApacheDirectoryStudio下载下来,并且安装好
2、打开客户端进行访问apacheDS
3、配置连接信息
依次填入连接名,apacheds地址,端口(apacheDS默认使用10389端口),加密方式选择不加密,单机Next
3、配置认证信息
验证方式选择默认的简单认证,并且填入apacheDS默认的dn(uid=admin,ou=system),密码默认为secret,单击Finish
4、连接apacheDS服务
1、修改apacheDS服务默认端口号(ApacheDirectoryStudio也要一起改)
apacheDS默认的端口号是10389(ldap)和10636(ldaps),如果需要配置,可在Overview界面自行调节,修改完重启生效
2、修改默认管理员密码(ApacheDirectoryStudio的连接信息也要一起改)
apacheDS中默认管理员为admin,密码为secret,当需要修改的时候
从目录结构中,单击ou=system,单击uid=admin
接着右边就会出现一个叫做userPassword的Attribute
双击value进行修改密码,选择下图中的New Password,然后输入密码并且确认,选择Show new password detail可以查看明文字符,单击ok保存
3、创建自己的partition
partition就好比一个完整的分区列表,在apacheds中,有一个默认的partition是"dc=example,dc=com",下面我们自定义一个partition
重启apacheDS使刚才的修改生效
[root@server opt]# /opt/apacheds-2.0.0.AM26/bin/apacheds.sh stop
Using ADS_HOME: /opt/apacheds-2.0.0.AM26
Using JAVA_HOME: /usr/local/jdk1.8.0_241
Stopping ApacheDS instance 'default' running as 12474
ApacheDS stopping 12474: 0, 60 attempts remaining
ApacheDS instance 'default' stopped successfully
[root@server opt]# /opt/apacheds-2.0.0.AM26/bin/apacheds.sh start
Using ADS_HOME: /opt/apacheds-2.0.0.AM26
Using JAVA_HOME: /usr/local/jdk1.8.0_241
Starting ApacheDS instance 'default'...
apacheDS重启以后,刷新页面即可看到刚才新增的Partition
4、禁用匿名访问
匿名访问在Overview页面,为了安全,我们将匿名用户访问禁用。默认是开启的,只需要把Allow Anonymous Access 前面的勾去掉即可(command+s进行保存)
5、启用访问控制
访问控制即ACI权限相关,默认情况下是关闭的。也就是说,用户除了ou=users,ou=system外,对于其他条目,均有操作权限,当开启该功能,则表示只有admin用户有管理权限,其他用户均无任何权限,如果需要给某个用户开启权限,则可以参考apacheds官方提到的ACI权限
1、新增
新增两个ou(people和group)
在需要增加ou的时候,通过ldif文件的导入形式远比手动添加更为方便,下面是添加两个ou的ldif配置文件内容。并且将他们导入进去
dn: ou=group,dc=baidu,dc=com
ou: group
objectclass: top
objectclass: organizationalUnit
dn: ou=people,dc=baidu,dc=com
ou: people
objectclass: top
objectclass: organizationalUnit
下图已经导入成功
新增两个组(jenkins-admin,jenkins-view)
我们的组在ou=group下面,分别为jenkins-admin和jenkins-view分组
dn: cn=jenkins-admin,ou=group,dc=baidu,dc=com
cn: jenkins-admin
objectclass: top
objectclass: groupOfNames
member: cn=jenkins-admin,ou=group,dc=baidu,dc=com
dn: cn=jenkins-view,ou=group,dc=baidu,dc=com
cn: jenkins-view
objectclass: top
objectclass: groupOfNames
member: cn=jenkins-view,ou=group,dc=baidu,dc=com
新增两个用户(user1,user2)
dn: cn=user1,ou=people,dc=baidu,dc=com
mail: [email protected]
sn: user1
cn: user1
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
userpassword: 12345678
dn: cn=user2,ou=people,dc=baidu,dc=com
mail: [email protected]
sn: user2
cn: user2
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
userpassword: 12345678
2、删除
对于apacheDS 条目的删除,非常简单,只需要单击右键,选择 Delete Entry 即可。
3、查询
查询则是根据一些用户的一些attribute,通过key,value的形式来匹配用户信息
当我们选择用户的时候,可以有下列attrubute来进行查询
我们来看看user1用户有哪些属性可以供我们查询,如下图,我们在创建用户的时候,定义了sn、cn、即mail参数
那么,接下来我来查询mail 为 [email protected] 的这个账户信息,可以看到,我们查询的目录为"dc=baidu,dc=com",单击下图中左上角的按钮,即可查询到对应的结果
4、修改
修改用户信息也特别方便,我们只需找到对应的用户,然后将右边的attribute对应的value进行双击,即可修改value。例如,我要修改user1用户的密码,如下图,找到对应的value,双击即可修改。
apacheDS的数据备份有两种形式,我们推荐第二种方式
注意:
在apacheDS数据备份的时候,如果你将所有的数据进行导出,并且接下来恢复会遇到一些问题
在apacheDS中,Partitions不可导入,只能通过ApacheDirectoryStudio进行创建
在apacheDS中,导入数据的时候要按照架构的方式,例如先创建Partition,再创建ou,再创建组或用户
那么在本例中当Partition或者ou不存在的时候,你导入用户或者组就会失败
所以我们在备份数据的时候,选择下面第二种方式(当然你也可以通过ApacheDirectoryStudio导出的时候选择objectclass=你想要导出的类型),先备份ou,再备份group和user
还原的时候也一样,先创建Partitions,再恢复ou,最后恢复group和user
1、通过 ApacheDirectoryStudio 进行export导出即可
2、通过 ldapsearch进行导出即可
导出 ou
ldapsearch -x -D "uid=admin,ou=system" -w admin -h 192.168.101.55 -p 10389 -b "dc=baidu,dc=com" "(objectclass=organizationalUnit)" > baidu_ou_bak.ldif
导出 group
ldapsearch -x -D "uid=admin,ou=system" -w admin -h 192.168.101.55 -p 10389 -b "dc=baidu,dc=com" "(objectclass=groupOfNames)" > baidu_group_bak.ldif
导出 user
ldapsearch -x -D "uid=admin,ou=system" -w admin -h 192.168.101.55 -p 10389 -b "dc=baidu,dc=com" "(objectclass=inetOrgPerson)" > baidu_user_bak.ldif
在下图中可以看到,我们已经将ou,group,user进行了备份
还原特别方便,通过 ApacheDirectoryStudio import 备份的 ldif 文件即可
先将刚才备份的数据进行删除。如下图所示,这时候我们只剩下 Partitions(“dc=baidu,dc=com”)
接下来,我们将备份的文件通过 ApacheDirectoryStudio 进行导入
1、将备份的ou文件 baidu_ou_bak.ldif 进行导入
2、将备份的group文件 baidu_group_bak.ldif 进行导入
3、将备份的user文件 baidu_user_bak.ldif 进行导入
可以看到,在我们导入完成以后,我们所删除的数据都已经恢复到ApacheDS服务当中