前言
在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 ]