Linux

為什麼這個 ldapadd 命令退出並出現“無效語法”錯誤?

  • September 18, 2020

我對 openldap 很陌生,但非常精通 linux/unix 環境。我正在嘗試使用此處的指南設置我的第一個測試 openldap 環境。我還閱讀了這裡的大部分管理指南,我不得不承認,它有很多內容需要學習。

因此,按照 ubuntu 基本設置指南,我創建了一個如下所示的 ldif 文件:

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=engineers,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: engineers
gidNumber: 5000

dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john

每當我嘗試使用以下方法添加它時:

$ ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif

我收到以下錯誤:

adding new entry "cn=engineers,ou=Groups,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
   additional info: objectClass: value #0 invalid per syntax

adding new entry "uid=john,ou=People,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
   additional info: objectClass: value #0 invalid per syntax

google 中針對此錯誤的結果沒有提供任何有用的建議。我在這裡做錯了什麼?

您的問題無疑是您需要將nis模式載入到 LDAP 伺服器中。如何執行此操作取決於您使用的是舊slapd.conf配置文件還是託管在目錄中cn=config並由slapd.d目錄支持的較新動態配置。

使用slapd.conf

您將需要include在您的架構定義中slapd.conf添加一行:

include /usr/local/etc/openldap/schema/nis.schema

這假定nis.schema文件位於該路徑;如果不是,請適當修改路徑。

您將需要重新啟動slapd以啟動新架構。

使用slapd.d

(為了完整起見,我將其包括在內,儘管它與您目前的配置沒有直接關係)。

slapd如果您使用動態cn=config配置,要將架構載入到其中,您可以使用ldapadd. 根據 ACL 的配置方式,該命令可能如下所示:

ldapadd -Y EXTERNAL -H ldapi:// -f /usr/local/etc/openldap/schema/nis.ldif

這假定您的執行slapd具有允許“對等憑據”身份驗證的 ACL root。如果這不起作用,您需要使用-Dand提供適當的綁定 DN 和密碼-W

在這種情況下不需要重新啟動。

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