Centos6

ldap_add:添加 pw-sha2.la 模組時出現其他(例如,特定於實現)錯誤 (80)

  • November 20, 2015

嘗試將模組添加到 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) $
   mockbuild@c6b9.bsys.dev.centos.org:/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
  1. 模組是否已經載入?我在 cn=config 中沒有看到它。
  2. 如何將其添加到 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 和slapdCentOS 包程式碼庫。

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 -VVV
@(#) $OpenLDAP: slapd 2.4.40 (Nov 10 2015 09:41:16) $
   mockbuild@c6b8.bsys.dev.centos.org:/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

我非常有信心插入以下內容而不會出錯:

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}

引用自:https://serverfault.com/questions/734519