AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1042484
Accepted
Little Code
Little Code
Asked: 2020-11-14 14:13:11 +0800 CST2020-11-14 14:13:11 +0800 CST 2020-11-14 14:13:11 +0800 CST

LDIF 添加/替换语法?

  • 772

(slapd 2.4.47+dfsg-3+deb10u3 - 来自 Debian 10)

我已经搜索了有关此问题的先前答案,但是尽管遵循了建议(使用changetype: modify),但我仍然遇到问题。

问题是需要能够编写一个混合了新元素和需要修改的现有元素的 LDIF 文件。

但是,以下两种方法都不起作用。

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: foo
-
add: olcTLSCertificateFile
olcTLSCertificateFile: foo
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: foo
-
add: olcTLSCipherSuite
olcTLSCipherSuite: foo
-
add: olcTLSVerifyClient
olcTLSVerifyClient: foo

运行时ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/myconfigs/ldifs/certs.ldif"会出现以下错误:

          SASL/EXTERNAL authentication started                                                                                                                                      
          SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth                                                                                                    
          SASL SSF: 0                                                                                                                                                               
          ldap_modify: Inappropriate matching (18)                                                                                                                                  
                additional info: modify/add: olcTLSCACertificateFile: no equality matching rule  

如果我再适应一种replace风格:

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: foo
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: foo
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: foo
-
replace: olcTLSCipherSuite
olcTLSCipherSuite: foo
-
replace: olcTLSVerifyClient
olcTLSVerifyClient: foo

错误变为:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldap_modify: Other (e.g., implementation specific) error (80)

“如果不存在则添加,如果存在则替换”的正确语法是什么?

openldap
  • 1 1 个回答
  • 1866 Views

1 个回答

  • Voted
  1. Best Answer
    Timor
    2020-11-14T16:50:40+08:002020-11-14T16:50:40+08:00

    替换实际上是“如果不存在则添加,如果存在则替换”。

    RFC2849状态

    “修改目录的 LDAP 操作(添加、删除、修改和 modrdn)与下面描述的更改记录类型(“添加”、“删除”、“修改”和“ modrdn”或“moddn”)。这种对应是有意的,并且允许从 LDIF 更改记录直接转换为协议操作。”

    好的,让我们看看这些协议操作应该如何在rfc4511,第 4.6 节中工作。

    “替换:用列出的新值替换修改属性的所有现有值,如果它不存在则创建该属性。如果没有值的替换将删除整个属性如果它存在,如果属性不存在则忽略它存在。”

    好吧,那就更好了,它是“如果不存在则添加”、“如果存在则替换”甚至是“删除”。

    让我们试试看。

    假设我的目录中有这个实体。

    dn: cn=timor,ou=people,dc=orga,dc=tld
    objectClass: inetOrgPerson
    objectClass: organizationalPerson
    objectClass: person
    objectClass: posixAccount
    objectClass: top
    cn: timor
    gidNumber: 10001
    homeDirectory: /home/timor
    sn: None
    uid: timor
    uidNumber: 10001
    displayName: Timor
    givenName: Timor
    userPassword:: <stripped>
    

    我设置了这个 LDIF,它mail向实体添加了三个值,不是使用“添加”而是“替换”。

    dn: cn=timor,ou=people,dc=orga,dc=tld
    changetype: modify
    replace: mail
    mail: first
    mail: second
    mail: third
    

    只需将其 ldapmodify 到目录即可。

    timor@somehost ~ $ ldapmodify -x -H ldaps://localhost -D "cn=Manager,dc=orga,dc=tld" -w "superSecret" -f /tmp/3mail.ldif 
    modifying entry "cn=timor,ou=people,dc=orga,dc=tld"
    

    工作正常。 (我不会粘贴更多的 LDIF,我相信你相信我的价值观是存在的)

    所以这实际上表明,还有一些其他问题。不幸的是,OpenLDAP 的错误消息“ldap_modify: Other (eg, implementation specific) error (80)”也不是很有帮助。我不止一次地看到它,而且经常出于完全不同的原因,例如模式违规、权限问题等等。

    我的建议是坚持您的第二个 ( ) 片段并在发出命令时changetype: modify打开调试。如果这没有帮助 - 我担心它不会 - 您可以对自己执行相同的操作,相同的选项,并在发出命令时仔细查看日志文件。-d -1ldapmodifyslapd-d -1ldapmodify

    • 1

相关问题

  • OpenLDAP 无效凭证

  • 从 OpenLDAP 检索操作属性

  • 为 Mac 网络使用 Linux 和 Open LDAP

  • 使用LDAP服务器身份验证的Linux中单个用户的多个登录名

  • 将 OpenLDAP 实现为目录而不是控制网络访问的指南?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve