一、openldap安装
1.yum进行安装
yum install openldap openldap-services openldap-services-sql openldap-clients
2.拷贝DB文件至ldap数据源所在目录
cp /usr/share/openldap-services/DB_CONFIG.example /var/lib/ldap
3.修改文件所属组和用户
chown ldap.ldap -R /etc/openldap/slapd.d
chown ldap.ldap -R /var/lib/ldap
4.启动
方法一:
systemctl start slapd
方法二:
slapd -F /etc/openldap/slapd.d -h ‘ldap:/// ldapi:/// ldaps:///’ -u ldap -g ldap -d 256
二、openldap的配置文件
1.安装openldap会有默认的配置在 /etc/openldap/slapd.d 是已经配好的。很难知道他是怎么配置的。但是不用担心 ,在/usr/share/openldap-services/有个sldap.ldif文件就是该默认配置的方法
2.自定义配置文件
vim /etc/openldap/slapd.conf
引入模型
include /etc/openldap/core.schema
引入其他配置文件
include /etc/openldap/access.conf
加载其他模块
moduleload back_ldap.la
进程id文件
piddile /etc/openldap/slapd.pid
启动参数文件
argsfile /etc/openldap/slapd.argsfile
对dn做访问限制
access to dn='dc=test,dc=com'
by * none (任何人不可访问)
by * read (所有人可查看)
by * write (所有人可写)
by cn=admin,dc=test,dc=com read(指定某个人)
对属性做访问限制
access to attr=mail
by * none (任何人不可访问)
by * read (所有人可查看)
by * write (所有人可写)
by cn=admin,dc=test,dc=com read(指定某个人)
对过滤条件做访问限制
access to filter="(objectClass=user)"
by * none (任何人不可访问)
by * read (所有人可查看)
by * write (所有人可写)
by cn=admin,dc=test,dc=com read(指定某个人)
默认数据源配置
database hdb
suffix "dc=test,dc=com"
rootdn "cn=admin,dc=test,dc=com"
rootpw secret
directory /var/lib/ldap
AD代理
前提必须引入模块 back-ldap.la
database ldap
suffix 'dc=ad,dc=com'
uri "ldap://127.0.0.1:389"
idassert-bind bindmethod=simple binddn='cn=admin,dc=ad,dc=com' credentials='secret' mode=self
将slapd.conf转为slapd.d配置文件
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
用户密码加密
slappasswd -s 123456
三、ldif详解
1.ldif文件规范
1)ldif文件每行的结尾不允许有空格或者制表符
2)ldif文件允许相关属性可以重复赋值并使用
3)ldif文件必须以.ldif结尾
4)ldif文件中以#开头的为注释,可作为注释使用
5)ldif文件所有的赋值方式为: 属性:[空格]属性值
6)ldif文件通过空行来分隔不同条目,空行前是一个条目,空行后是一个条目
2.ldif语法格式
dn: 条目名 唯一
objectclass(对象类): 属性值
ldap属性名: 属性值
四、ldap增、删、改、查操作
1.操作配置文件
1)查询
ldapsearch -Y EXTERNAL -H ldapi:/// -b ‘dc=test,dc=com’
2)删除
ldapdelete -Y EXTERNAL -H ldapi:/// ‘dc=test,dc=com’
3)新增
ldapadd -Y EXTERNAL -H ldapi:/// -f add_entry.ldif
4)修改
ldapmodify -Y EXTERNAL -H ldapi:/// -f modify_entry.ldif
2.操作数据
1)查询
ldapsearch -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -b ‘ou=users,dc=test,dc=com’ -H ldap://127.0.0.1
2)删除
ldapdelete -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ ‘ou=users,dc=test,dc=com’ -H ldap://127.0.0.1
3)新增
ldapadd -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f add_entry.ldif
4)修改
ldapmodify -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f add_entry.ldif
3.新增条目示例
cat > add_base.ldif << EOF
dn: dc=test,dc=com
o: test
dc: test
objectClass: top
objectClass: dcObject
objectClass: organization
dn: ou=users,dc=test,dc=com
ou: users
objectClass: top
obejctClass: organizationalUnit
EOF
ldapadd -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f add_base.ldif
4.ldap对象类说明
对象类分为: 抽象类、结构类、辅助类
每个条目必须拥有一个抽象类(top)和一个结构类
5.modify详解
modify是支持细粒度的增删改操作
1)首先我们添加一个用户
cat > user.ldif << EOF
dn: cn=name,ou=users,dc=test,dc=com
objectClass: top
objectClass: user
cn: name
cnname: name
mail: [email protected]
userPassword: secret
EOF
ldapadd -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f auser.ldif
2)删除属性
cat > delete_mail.ldif >> EOF
dn: cn=name,ou=users,dc=test,dc=com
changetype: modify
delete: mail
EOF
ldapmodify -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f delete_mail.ldif
3)修改属性
cat > update_name.ldif >> EOF
dn: cn=name,ou=users,dc=test,dc=com
changetype: modify
replace: cn
cn: newname
EOF
ldapmodify -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f update_name.ldif
3)新增属性
cat > add_mail.ldif >> EOF
dn: cn=name,ou=users,dc=test,dc=com
changetype: modify
add: mail
mail: [email protected]
EOF
ldapmodify -x -w ‘secret’ -D ‘cn=admin,dc=test,dc=com’ -H ldap://127.0.0.1 -f add_mail.ldif