centos 7 安装 openldap openldap 相关名称解释及CentOS 7 配置openldap过程。
ldap的信息模型 LDAP的信息模型是建立在”条目”(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的”可区分名称”DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如”cn”是通用名称(common name) ,或者”mail”是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值”Babs Jensen” 。一个mail属性可能包含”Babs@abc.com “ 。一个jpegphoto属性可能包含一幅JPEG(二进制)格式的图片。
ldap的objectClass LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式规则,可以理解为关系数据库的表结构。
objectClasss
含义
olcGlobal
全局配置文件类型,主要是cn=config.ldif的配置基
top
顶层对象
organzationa
组织,比如公司名称,顶层对象
organizationalUnit
重要,一个目录节点,通常中group,或者部门这样的含义
inetOrgPerson
重要,我们真正的用户节点为类型,person类型,叶子节点
groupOfNames
重要,分组的group类型,标记一个group节点
olcModuleList
配置块的对象
ldap常用关键字列表 ldap的entry是由名种字段构成,可以理解为关系数据库的字段。
关键字
英文全称
含义
dc
Domain Component
域名的部分,其格式是将完整域名分成几部分,如域名example.com变成dc=example,dc=com
uid
User Id
用户名,如“tom”
ou
Organization Unit
组织单位,类似Linux文件系统中的子目录,它是一个窗口对象,组织单位可以包含其它各类对象
cn
Common Name
公共名称,如”Thomas Johansson”
sn
surname
姓,如“Johansson”
dn
Distinguished Name
惟一辨识名,类似Linux文件系统中的绝对路径,每个对象都有一个惟一的名称,如”uid=tom,ou=market,dc=example,dc=com”,在一个目录树中DN是惟一的。
rdn
Relative dn
相对辨识名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或”cn=Thomas Johansson”
c
Country
国家,如“CN”或“US”等
o
Organization
组织名,如“Example,Inc.”
centos 7 安装 openldap 在centos 7中使用yum安装openldap,并安装phpldapadmin管理工具。
安装openldap yum安装openldap。
1 yum install openldap openldap-clients openldap-servers migrationtools
配置openldap 配置前的准备工作:
生成密码 使用slappasswd生成密码:
1 2 slappasswd -s your_passwd {SSHA}m0EtqWHBpXh0O88k8+FpNx6L5doX2jVe
记住生成的密码。
新增修改密码文件 可以在家目录下创建一个目录ldif,创建ldif文件操作。示例如下:
1 2 3 4 5 vim changepwd.ldif dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}m0EtqWHBpXh0O88k8+FpNx6L5doX2jVe
以上ldif文件的内容解释如下:
第一行执行配置文件,这里表示指定cn=config/olcDatabases={0}config文件。
第二行changetype指定类型为修改。
第三行add表示添加olcRootPW配置项。
第四行指定olcRootPW配置项的值。 默认的olcDatabase={0}config文件,里面没有olcRootPW项,执行后,会新增olcRootPW项,内容为文件中指定的加密后的字条串。
执行导入命令,修改ldap配置文件,通过-f执行文件。
1 ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif
导入schema文件 这些schema文件位于/etc/openldap/schema/目录中,schema控制着条目拥有哪些对象、类型和属性,可以自行选择需要的进行导入。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ldapadd -Y EXTERNAL -H ldapi:/// -f channgepwd.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
修改域名 添加一个域名文件,编辑自己的域名信息,管理员为admin。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 vim changedomain.ldif dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=example,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=example,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=admin,dc=example,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: {SSHA}m0EtqWHBpXh0O88k8+FpNx6L5doX2jVe dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by read olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by * read
导入域名ldif文件。
1 ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif
启动memberof功能 添加add-memberof.ldif文件,并导入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 dn: cn=module{0},cn=config cn: module{0} objectClass: olcModuleList objectClass: top olcModuleLoad: memberof.la olcModulePath: /usr/lib64/openldap dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfUniqueNames olcMemberOfMemberAD: uniqueMember olcMemberOfMemberOfAD: memberOf
添加refint1.ldif文件
1 2 3 4 vim refint1.ldif dn: cn=module{0},cn=config add: olcmoduleload olcmoduleload: refint
添加refint2.ldif文件
1 2 3 4 5 6 7 dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: olcRefintConfig objectClass: top olcOverlay: refint olcRefintAttribute: memberof uniqueMember manager owner
依次导入创建的ldif文件。
1 2 3 ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif
创建组织,创建admin角色 创建base.ldif文件,并导入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 dn: dc=example,dc=com objectClass: top objectClass: dcObject objectClass: organization o: example com dc: example dn: cn=admin,dc=example,dc=com objectClass: organizationalRole cn: admin dn: ou=People,dc=example,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=example,dc=com objectClass: organizationalRole cn: Group
执行密码,添加配置项,导入输入配置的密码。
1 ldapadd -x -D cn=admin,dc=example,dc=com -W -f base.ldif
安装ldapadmin ldap安装好后,可以安装web管理界面phpldapadmin。centos 7 默认的源中是php5。如果是php7,会有报错。
1 yum install phpldapadmin
更改httpd配置 修改apache的phpldapadmin文件,配置外网访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 vim /etc/httpd/conf.d/phpldapadmin.conf Alias /phpldapadmin /usr/share/phpldapadmin/htdocs Alias /ldapadmin /usr/share/phpldapadmin/htdocs <Directory /usr/share/phpldapadmin/htdocs> <IfModule mod_authz_core.c> Require all granted </IfModule> <IfModule !mod_authz_core.c> Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
修改配置用DN登录phpldapadmin 修改配置行示例如下:
1 2 3 4 5 6 7 8 9 10 11 vim /etc/phpldapadmin/config.php -------------------------------- // $servers ->setValue('login' ,'attr' ,'dn' );$servers ->setValue('login' ,'attr' ,'cn' ); /* Enable anonymous bind login. */$servers ->setValue('login' ,'anon_bind' ,false ); occur with other attributes have the same value. */$servers ->setValue('unique' ,'attrs' ,array('mail' ,'uid' ,'uidNumber' ,'cn' ,'sn' ));
启动apache 启动httpd和设置自启动。
1 2 3 4 5 6 systemctl start httpd systemctl enable httpd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --complete-reload
登录phpldapadmin 使用浏览器访问http://server_ip/phpldapadmin。即可。打开后登录测试。