前言
在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 ]
複製程式碼