说一说我的openldap配置,由于我的虚拟机操作系统是银河麒麟(内核是ubuntu),因此,无法实现openldap的yum安装,结果导致了不知为何与网上大部分的文章所描述的文件结构不一致(slapd.d这个文件我搜了所有文件都没找见,只能去/usr/local/openldap/etc/openldap/slapd.conf来进行配置),毕竟我是开发人员,最后的目的是写出实现的代码,功力还是有些生疏。下面开始我的配置
首先进入上面的配置文件中,原文件如图
将此配置文件下的schema/文件打开,将.schema文件都包含进去,然后再进入配置文件往下看,
接下来添加
loglevel 256
logfile /usr/local/openldap/var/slapd.log
用来生成日志(挺重要的,它可以让你更清晰它的运行流程及原理)。
接下来很重要,就是更改用户名及密码suffix,rootdn
这两个相当与你的用户名,它们的重要性不言而喻。
rootpw 相当于你的密码,建议不要用明文,改为密文更安全,这里说一下,更改密码的url是在/usr/local/openldap/sbin中,因为在/usr/local/openldap/bin中也有相似的文件,当时一直在提示报错没找到原因(原谅我的生疏......).这种东西是搜不到的,切记切记。
更改密码命令
在sbin目录下
./slappasswd -h{SSHA}
输入密码(已翻译成中文...)
确认新密码(已翻译成中文...)
将{SSHA}的密文密码复制到配置文件中。
基本上配置就这样了,以后进行同步配置时再单独说。
说一下使用
配置完之后,启动slapd文件
/usr/local/openldap/libexec/slapd -d 256
这个图片表示服务端启动成功
为了方便
可以下载一个客户端软件
我下的是ApacheDirectoryStudio 网址:http://directory.apache.org/s...
还挺好用
输入主机地址、用户、密码,检测连接,若没有问题,在服务端创建一个test.ldif文件。(注意网上添加这个文件数据是直接运行,当时想不通到底是在哪个目录下创建,后来敲了下面的ldapadd命令后顿悟应该与命令文件在同一目录下,即 /usr/local/openldap/bin下创建这个文件)
dn: dc=mydomain,dc=com
objectClass: dcObject
objectClass: organization
dc: mydomain
o: mydomain.Inc
dn: cn=Manager,dc=mydomain,dc=com
objectClass: organizationalRole
cn: Manager
dn: ou=itsection,dc=mydomain,dc=com
ou: itsection
objectClass: organizationalUnit
dn: cn=sean,ou=itsection,dc=mydomain,dc=com
ou: itsection
cn: sean
sn: zhouxiao
objectClass: inetOrgPerson
objectClass: organizationalPerson
插入数据
./ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W -f test.ldif
服务端要你输入密码
只要不报错,服务端就没有问题。
然后观察客户端是否显示,若没问题,说明你的openldap运行无误。
关于自定义schema文件
这个真是一个坑,我刚开始只是单纯的以为只需要扩展个.schema文件,然后在openldap配置文件中给它include进去就行了,事实上真正定义.schema文件后就不这样想了,我先拿我配置的schema文件说一下:
attributetype ( 2017.1.4.1.0.1.1
NAME 'servId'
DESC 'RFC2256: servId'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
attributetype ( 2017.1.4.1.0.1.2
NAME 'servName'
DESC 'RFC2256: servName'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
attributetype ( 2017.1.4.1.0.1.3
NAME 'servIp'
DESC 'RFC2256: servIp'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
attributetype ( 2017.1.4.1.0.1.4
NAME 'servPid'
DESC 'RFC2256: servPid'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
objectclass ( 2017.1.4.1.0.1
NAME 'globalserver'
DESC 'RFC2798: globalserver'
SUP top STRUCTURAL
MUST servId
MAY (
servName $ servIp $ servPid)
)
第一个坑:就是你的SYNTAX、EQUALITY、SUBSTR一定要与标准匹配,实在不行网上搜去查找(为了这个匹配不知道我是怎么到网上一个一个的文件试的....说多了都是泪)。网上的很多都是错误的,总之要勤快一点。
第二个坑:就是你自定义的属性一定不能跟内置的属性有重复,切记切记!因为你最后真的有可能因为这个而疯掉,明明什么都是对的......
还有一个不太确定,就是OID号的问题,网上说最好可以去自己申请一个,我这个是在网上抄的,目前没什么影响.....
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。