至于LDAP服务是哪些东东,这儿就不再屁话了,来看这个文章的肯定是了解过,有这个需求和兴趣才来的。
我自己花了大约2周的业余时间,可能有20-30个小时的净学习时长吧linux定时器,看了诸多的教程、经验,最后根据下述这几篇文章完成了服务器搭建,构建与删掉用户和组,导出Linux系统帐户,修改RootDN,安装phpldapAdmin,等常用的功能。下边是相关文章的联接和标题,以及我自己做的一些安装过程记录等。在此分享给你们。
最佳基本的其实是官网:OpenLDAP,MainPage实际上官网说明上面的安装方式,真正难以正确安装。总之我是操作没成功!!
1.《我花了一个春节总算搞清了OpenLDAP》我花了一个国庆总算搞清了OpenLDAP_配置
我对SegmentFault高手的这个文章进行了总结,在下边,有须要的可以看一下
下边的都是英语的,还有待翻译。并且能配置服务器的,应当就会基本的英语,根据图文介绍,一步一步确实能配置出来
2.《一步一步地在CentOS7上安装和设置LDAP服务器》
3.《在CentOS7上安装和配置phpLDAPAdmin这一图形化的管理工具》
4.《如何将linux系统的本地用户迁移到LDAP账户》
5.《如何配置OpenLDAP并执行管理LDAP任务》----比较详尽地介绍了LDAP的配置项和管理工具、命令的用法
6.《如何在OpenLDAP服务器上修改账户密码》对普通用户和管理员帐户的密码的修改
《我花了一个国庆总算看懂了OpenLDAP》正文的总结:
整个OpenLDAP的构架大致包含3个部份,OpenLDAP、phpLDAPadmin、PWM。
首先,是OpenLDAP的服务器本身,相当于一个mysql数据库。
phpLDAPadmin,是一个图形化管理界面。
PWM,这是给用户提供一个更改密码所用的顾客端。
大致的结布光:
一、安装所需软件
命令:#yuminstallopenldapopenldap-clientsopenldap-servers
启动slapd进程,并设置为开机自启动
命令:
#systemctlstartslapd
#systemctlenableslapd
#systemctlstatusslapd
二、配置OpenLDAP
此前LDAP可以通过配置slapd.conf这个文档完成,新版的OpenLDAP早已将其抛弃!取而代之的是名为slapd.d整个配置文件夹。
配置OpenLDAP须要通过ldapmodify命令执行一系列自己编撰的“XXX.ldif”格式的配置文件,而不要更改任何OpenLDAP自行安装的配置文件。
比如,更改RootDN,可以创建一个changerootdn.ldif的文件,文件内容类似下方:
dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=qiban,dc=com
replace: olcSuffix
olcSuffix: dc=qiban,dc=com
各行的解释:
1.dn行,表示你要更改的内容,本反例中要更改{2}bdb;不同的安装情况下可能有差异,须要自行查看比对
查看命令:#ls/etc/openldap/slapd.d/cn=config/注:也就是slapd.d文件夹下,cn=config文件夹下的内容
可能的结果如下linux php ldap 安装,是一堆.ldif格式的文档:
cn=module{0}.ldif cn=schema/ cn=schema.ldif
olcDatabase={0}config.ldif
olcDatabase={-1}frontend.ldif
olcDatabase={1}monitor.ldif
olcDatabase={2}bdb/
olcDatabase={2}bdb.ldif
这个反例中要改的就是最后一行的这个文档内容
2.changetype:modify这一行表示这是一个起到更改-配置作用的文档,
3.replace行,类似mysql数据库的update操作;若修改为add,则可看做mysql的insert操作
4.olcRootDN行,在这儿代表整个OpenLDAP系统的管理员用户名,由前面的cn=admin,dc=qiban,dc=com,共同组成,类似email名称。cn=邮箱帐号dc=qiban,dc=com类似@符号前面的域名。
注!须要给这个管理员用户设置密码,具体做法须要搜索,这儿没有给出配置示例
可以参考:《如何在OpenLDAP服务器上修改账户密码》
HowToChangeAccountPasswordsonanOpenLDAPServer|DigitalOcean
《如何配置OpenLDAP并执行管理LDAP任务》
HowToConfigureOpenLDAPandPerformAdministrativeLDAPTasks|DigitalOcean
编撰完成后还须要运行命令,将给文档的配置内容导出LDAP
命令:#ldapmodify-Q-YEXTERNAL-Hldapi:///-fchangerootdn.ldif
三、添加memberOf模块
这个模块的作用是当你建一个组的时侯,把一些用户添加到这个组里去,它会手动给那些用户添加一个memberOf属性,有好多应用须要检测这个属性。
须要建3个.ldif文件,其中1个执行ldapmodify命令,2个执行ldapadd命令,
1.memberof_config.ldif文档,内容如下:
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcModulePath: /usr/lib64/openldap
dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
注:须要注意“olcModulePath”和“dn:olcOverlay”这两行,须要先查看自己的模块目录是不是在/usr/lib64下边,之后仔细比对数据库类型和数字linux操作系统简介,不能盲目复制!!!
该文档执行ldapadd命令进行添加
命令:#ldapadd-Q-YEXTERNAL-Hldapi:///-fmemberof_config.ldif
执行完以后,检测/etc/openldap/slapd.d/cn=config/目录下是否多了一个模块,该新增模块的数字编号直接影响下一步操作。
2.refint1.ldif文档,内容如下:
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint
本示例中,memberOf是第一个模块,所以编号是0,不同的安装条件下不一样,要认清楚究竟第几号模块是memberof。该文档须要执行ldapmodify命令:
命令:#ldapmodify-Q-YEXTERNAL-Hldapi:///-frefint1.ldif
文档内容大意是说,要更改我们上一步刚添加的那种模块文件的内容。
3.refint2.ldif文档,内容如下:
dn: olcOverlay={1}refint,olcDatabase={2}bdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner
同样须要注意检测db类型的编号,否则可能配置失败。
该文档须要执行ldapadd命令:
命令:#ldapadd-Q-YEXTERNAL-Hldapi:///-frefint2.ldif
四、安装phpLDAPadmin图文化管理工具(须要安装nginx和php-fpm)
1.yum命令安装
命令:#yuminstallphpldapadmin
2.配置phpLDAPadmin
本示例中采用的是nginx软件,须要配置,使之支持phpLDAPadmin
配置内容如下:
location /htdocs {
alias /usr/share/phpldapadmin/htdocs;
index index.php;
location ~ .php$ {
alias /usr/share/phpldapadmin;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param _FILENAME $document_root$fastcgi__name;
include fastcgi_params;
}
}
默认状态下,管理配置文件安装在/usr/share/phpldapadmin/htdocs下,必得要在这儿配置一个alias能够通过nginx使用web地址访问到它,但在php-fpm时又要配置另外一个alias,
下边配置php-fpm,配置/etc/phpldapadmin/config.php文档的下述配置项:
重启nginx和php-fpm服务,就可以通过URL地址访问phpLDAPadmin了。
登陆的时侯输入用户名:cn=admin,dc=qiban,dc=com,之后输入密码,假如你后边一切配置正确,即可步入管理界面
建卡的帐户和组的配置。
1.首先要构建两个organizationalUnit,分别是groups和users。
2.在users下边建几个inetOrgPerson,也就是实际的用户帐号。
注意!在创建新条目时,一定要选择默认,不要选择哪些Posix或则GenericUserAccount,那只会创建出一些没用的Linux帐号下来。密码一定要选md5,否则前面和其它系统联接会出现问题。
3.在groups下边建几个组吧,例如admins,users等。
注意!选择objectClass为groupOfNames即可。
4.把你刚才在第2步建好的用户分门别类的添加到对应的组里。
提示:在这一步上,假如上面配置的memberOf模块正确的话,还会在user的显示内部属性里看见它的memberOf这条属性,假如看不到,说明没有配置对。
翻译:《如何修改LDAP服务器上的账号的密码》
HowToChangeAccountPasswordsonanOpenLDAPServer|DigitalOcean
一、更改RootDN帐户的密码
假如您忘掉了LDAP管理密码,则须要在LDAP系统的服务器上具有root或sudo访问权限能够重置它。登陆到您的服务器以开始使用。
1.查找当前的RootDN信息
首先,您必须找到RootDN账户和当前RootDN密码的哈希值。这在特殊的cn=config配置DIT中可用。我们可以通过输入以下命令来找到我们要查找的信息:
# ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif
运行上述命令后,应当返回DIT的rootDN账户和密码。它就会告诉您配置数据库的位置。我们也须要将此信息写入主目录中的文件,便于在获得新密码哈希后可以对其进行更改:
下边是显示下来的内容截图
2.哈希一个新密码
接出来,我们可以使用slappasswd程命令来哈希一个新密码。我们想要使用我们查询的olcRootPW行中的相同的哈希数值,由带括弧的前缀值表示。在我们的反例中,就是{SSHA}。
使用slappasswd程序为我们要使用的密码生成正确的哈希。我们将新哈希附加到我们使用last命令创建的文件的末尾。假如您使用的是非root账户,则须要指定命令的完整路径:
命令:
# /usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif
系统将提示您输入并确认要使用的新密码。散列值将附加到我们文件的末尾。
3.修改配置DIT中的密码
如今,我们可以编辑该文件以构造有效的LDIF命令来修改密码。打开我们写过的文件:
# vi ~/newpasswd.ldif
他应当显示为类似下边的内容:
dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3
{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
您可能有多个值,具体取决于您的LDAP服务器是否具有多个DIT。假如是这些情况,请使用olcRootDN值查找要更改的正确账户。删掉其他dn,olcRootDN,olcRootPW三元组(假如有)。
在确认olcRootDN行与您尝试更改的账户匹配后,请将其注释掉(后面加#)。在它下边,我们将添加两行。第一行应当指定
changetype:modify,第二行应当告诉LDAP你要replace:olcRootPW。它看上去像这样:
dn:olcDatabase={1}hdb,cn=config
#olcRootDN:cn=admin,dc=example,dc=com
changetype:modify
replace:olcRootPW
olcRootPW:{SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3
{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
如今,删掉olcRootPW行中的哈希值,并将其替换为您在下边生成的哈希值。删掉任何与之无关的行。它如今应当是像这样的:
dn:olcDatabase={1}hdb,cn=config
#olcRootDN:cn=admin,dc=example,dc=com
changetype:modify
replace:olcRootPW
olcRootPW:{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
更改完后保存并关掉,使用下边的命令进行修改:
命令:
# ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif
这将修改cn=configDIT中的管理密码。DIT=DirectoryInformationTree?文件目录树
更改正常/普通DIT中的密码
这早已修改了管理DIT中条目的密码。并且,我们依然须要更改常规DIT中的条目。目前旧密码和新密码都有效。我们可以通过使用新凭据更改常规DIT条目来解决此问题。
再度打开LDIF文件:
# vi ~/newpasswd.ldif
将dn:行中的值替换为您之前注释掉的RootDN值。此条目是我们修改密码的新目标。
我们还须要使用userPassword修改两次出现的olcRootPW
这样我们就可以更改正确的值了。完成后,LDIF文件应如下所示:
[output~/newpasswd.ldif]
dn:cn=admin,dc=example,dc=com
changetype:modify
replace:userPassword
userPassword:{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
如今,我们可以使用我们在configDIT中设置的新密码通过绑定来更改该条目的密码。您须要绑定到RootDN条目才会执行操作:
#ldapmodify-Hldap://-x-D"cn=admin,dc=example,dc=com"-W-f~/newpasswd.ldif
系统将提示您输入在配置DIT中设置的新密码。经过身分验证后,密码将被修改,只保留新密码以进行身分验证。
推论
LDAP一般用于储存账户信息,因而了解怎样正确管理密码十分重要。大多数情况下,该过程相对简单,但对于更密集的操作linux php ldap 安装,您一直可以通过一些工作来更改密码。