尝试向 OpenLDAP 添加模块时出现此错误:
# ldapadd -H ldapi:/// -Y EXTERNAL -D 'cn=config' -f ./module.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: <olcModuleLoad> handler exited with 1
这是 ldif:
# cat module.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/local/libexec/openldap
olcModuleLoad: pw-sha2.la
这是slapd-sha2.so 模块。自述文件说明似乎已过时。
以下是模块目录内容:
# ls /usr/local/libexec/openldap
pw-sha2.a pw-sha2.la pw-sha2.so pw-sha2.so.0 pw-sha2.so.0.0.0
这是目前 OpenLDAP 中的另一个模块:
# ldapsearch -H ldapi:/// -Y EXTERNAL -b 'cn=module{0},cn=config'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
# extended LDIF
#
# LDAPv3
# base <cn=module{0},cn=config> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# module{0}, config
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModuleLoad: {0}syncprov.la
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
我尝试在 ldif 中用 {1} 作为模块后缀,但没有成功。
OpenLDAP 版本:
# slapd -V
@(#) $OpenLDAP: slapd 2.4.40 (Sep 29 2015 10:26:27) $
[email protected]:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd
我按照以下步骤编译该模块。
安装先决条件:
yum -y install git libtool openldap-devel nss nss-devel openssl openssl-devel db4 db4-devel
获取模块源码:
git clone https://github.com/gcp/openldap.git
构建模块:
cd openldap
./configure
make depend
make
cd contrib/slapd-modules/passwd/sha2/
make
make install
该模块已加载吗?我在 cn=config 中没有看到它。
如何将其添加到 OpenLDAP 配置中?
@473183469 建议这个 ldif:
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/local/libexec/openldap/
olcModuleLoad: pw-sha2
当我尝试时,出现此错误:
# ldapadd -H ldapi:/// -Y EXTERNAL -D 'cn=config' -f ./module.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module{0},cn=config"
ldap_add: Naming violation (64)
编辑2:
为了清楚起见,我正在尝试使用从 github 源代码库编译的 pw-sha2 和slapd
来自 CentOS 包库的 pw-sha2。
ls -laFtr /usr/local/libexec/openldap/
total 124
-rwxr-xr-x 1 root root 46158 Nov 6 11:53 pw-sha2.so.0.0.0*
lrwxrwxrwx 1 root root 16 Nov 6 11:53 pw-sha2.so.0 -> pw-sha2.so.0.0.0*
lrwxrwxrwx 1 root root 16 Nov 6 11:53 pw-sha2.so -> pw-sha2.so.0.0.0*
-rw-r--r-- 1 root root 910 Nov 6 11:53 pw-sha2.la
-rw-r--r-- 1 root root 61274 Nov 6 11:53 pw-sha2.a
drwxr-xr-x 2 root root 4096 Nov 6 11:53 ./
drwxr-xr-x. 3 root root 4096 Nov 19 14:19 ../
官方 CentOS slapd:
# slapd -VVV
@(#) $OpenLDAP: slapd 2.4.40 (Nov 10 2015 09:41:16) $
[email protected]:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd
Included static backends:
config
ldif
monitor
bdb
hdb
ldap
mdb
meta
null
passwd
relay
shell
sock
slapd
从源代码构建:
# /usr/local/libexec/slapd -VVV
@(#) $OpenLDAP: slapd 2.X (Nov 19 2015 14:18:36) $
root@my_hostname.my_domain.com:/root/openldap/servers/slapd
Included static overlays:
syncprov
Included static backends:
config
ldif
monitor
bdb
hdb
mdb
relay
答案1
我非常有信心以下内容将会被正确插入:
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/local/libexec/openldap/
olcModuleLoad: pw-sha2
我的信心源自于它正是ldif
我用来启用该模块的。
顺便说一句:如果您希望密码模式成为默认密码模式,请PasswordHash
修改frontend
:
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
replace: olcPasswordHash
olcPasswordHash: {SHA256}