ubuntu下OpenLDAP添加自定义属性

1,700 阅读2分钟

前言

在Ubuntu14.04.1下安装LDAP后添加自定义属性后,重启服务并无生效。还需要重新编译schema文件

如果我们直接在/etc/ldap/schema/core.schema/etc/ldap/schema/inetorgperson.schema中添加了自定义属性,或者添加了自定义的*.schema,并且service slapd restart重启服务后未生效。

那么需要进入如下操作:

创建编译配置文件

在/tmp下创建任意临时文件夹

在控制台执行如下命令,创建myLdap.conf并引入.schema文件,如果有自定义的*.schema也一并写入

cat > myLdap.conf << EOF
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/nis.schema
EOF

编译schema

接着执行如下命令对schema进行编译

# slapcat -f ./myLdap.conf -F ./ -n0

如无报错会在当前文件夹(/tmp/myLdap)下生成如下文件结构

# tree
.
├── cn=config
│   ├── cn=schema
│   │   ├── cn={0}core.ldif
│   │   ├── cn={1}cosine.ldif
│   │   ├── cn={2}inetorgperson.ldif
│   │   └── cn={3}nis.ldif
│   ├── cn=schema.ldif
│   ├── olcDatabase={0}config.ldif
│   └── olcDatabase={-1}frontend.ldif
├── cn=config.ldif
└── myLdap.conf

2 directories, 9 files

使用新编译ldif

现在我们需要复制./cn=config/cn=schema下的*.ldif文件到/etc/ldap/slapd.d/cn=config/cn=schema/路径下

# rm -rf /etc/ldap/slapd.d/cn=config/cn=schema/*
# cp ./cn=config/cn=schema/* /etc/ldap/slapd.d/cn=config/cn=schema/

修改文件权限

# chown openldap.openldap /etc/ldap/slapd.d/cn=config/cn=schema/*

查看文件权限,确认修改成功,如果文件所有者非openldap重启服务会报错

# ll /etc/ldap/slapd.d/cn=config/cn=schema/
total 48
drwxr-x--- 2 openldap openldap  4096 Nov 21 22:35 ./
drwxr-x--- 3 openldap openldap  4096 Nov 21 22:10 ../
-rw------- 1 openldap openldap 15499 Nov 21 22:35 cn={0}core.ldif
-rw------- 1 openldap openldap 11361 Nov 21 22:35 cn={1}cosine.ldif
-rw------- 1 openldap openldap  2855 Nov 21 22:35 cn={2}inetorgperson.ldif
-rw------- 1 openldap openldap  6491 Nov 21 22:35 cn={3}nis.ldif

最后重启OpenLDAP

# service slapd restart
 * Stopping OpenLDAP slapd             [ OK ]
 * Starting OpenLDAP slapd             [ OK ]