使用命令行 (Linux) 或 LDIF,我可以找到许多创建新组并定义其成员的示例,但没有这样的示例:
如何将用户添加到现有组?
假设这个人也已经存在。
例如将用户添加uid=fred,ou=people,dc=example,dc=com
到组cn=vipb,ou=groups,dc=example,dc=com
。
我在导入用户ldapadd
和ldif
文件时遇到问题。我得到的错误是:
ldap_add: Constraint violation (19)
additional info: structuralObjectClass: no user modification allowed
Run Code Online (Sandbox Code Playgroud)
导入的用户都是ou=People,dc=example,dc=org
. LDAP 服务器已包含此基本 DN。
该/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
文件包含以下 ACL 条目:
olcAccess: {2}to dn.base="ou=People,dc=example,dc=org" attrs=children by gr
oup.exact="cn=Manager,ou=Roles,dc=example,dc=org" manage
Run Code Online (Sandbox Code Playgroud)
该ldif
文件被导入如下:
ldapadd -f import.ldif -xv -D "cn=drupal,ou=Apps,dc=example,dc=org" -h localhost -W
Run Code Online (Sandbox Code Playgroud)
该cn=drupal,ou=Apps[...]
条目是 的成员,cn=Manager,ou=Roles,dc=example,dc=org
因此它应该具有足够的写入权限(因为管理是可用的最高权限级别)。
当我发出ldapadd
命令时,导入在第一个ldif
条目时失败。完整的命令输出是:
add objectClass:
top
person
inetOrgPerson
add uid:
John.Merrell
add mail:
john.merrell@example.org
add cn:
John D Merrell
add structuralObjectClass:
inetOrgPerson
add …
Run Code Online (Sandbox Code Playgroud) 该ldapmodify
手册页指出:
ldapmodify 的默认值是修改现有条目
然而,当我尝试导入 LDIF 文件时,ldapmodify
出现以下错误:
ldapmodify: modify operation type is missing at line X
Run Code Online (Sandbox Code Playgroud)
Q1:为什么,我应该将哪些参数添加到我的 ldapmodify 命令中?
如果我使用 LDIF 文件导入ldapadd
并且条目已经存在,我会收到以下错误:
ldap_add: Already exists (68)
Run Code Online (Sandbox Code Playgroud)
这可以使用-c
开关忽略(继续),但是 ldap_add 不会更新现有条目。相反,为了更新现有条目,应该使用ldapmodify
,但ldapmodify
不会添加丢失的条目。
Q2:有没有办法通过创建丢失的条目并同时更新现有条目来导入 LDIF 文件?
我有 ldif
dn: olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config
objectClass: top
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=default,ou=policies,dc=local
olcPPolicyHashCleartext: TRUE
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: top
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: {1}memberof
olcMemberOfMemberAD: uniqueMember
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfRefInt: TRUE
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下命令来配置 ldap 服务器:
ldapadd -Y EXTERNAL -H, ldapi:/// -f /tmp/overlays.ldif
The error I'm getting is:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config"
ldap_add: Invalid syntax (21)
additional info: objectClass: value #3 invalid per syntax
Run Code Online (Sandbox Code Playgroud)
我怀疑是因为密码不正确,但我不能确定。我在网上搜索的点击次数是“值 #2”或“值 #1”——作为非 ldap …
我创建了这个自定义的非常基本的架构:
objectclass ( 2.25.2.2.1
NAME 'myObjectClass'
DESC 'myObjectClass objectclass'
STRUCTURAL
MUST ( cn )
)
Run Code Online (Sandbox Code Playgroud)
我已将其添加到 myObjectClass.ldif 文件中,没有任何问题:
dn: cn=myObjectClass,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: myObjectClass
olcObjectClasses: {0}( 2.25.2.2.1 NAME 'myObjectClass' DESC 'myObjectClass objectclass' STRUCTURAL MUST cn )
Run Code Online (Sandbox Code Playgroud)
使用 ldapmodify:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f myObjectClass.ldif
Run Code Online (Sandbox Code Playgroud)
现在我尝试用delete.ldif删除它:
dn: cn=schema,cn=config
changetype: modify
delete: objectClass
objectClass: 2.25.2.2.1
Run Code Online (Sandbox Code Playgroud)
使用ldapmodify总是得到ldap_modify:服务器不愿意执行(53):
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f delete.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=schema,cn=config"
ldap_modify: Server is unwilling …
Run Code Online (Sandbox Code Playgroud) 有没有办法在 LDIF 文件中执行以下操作之一?
或者: