【发布时间】:2017-08-10 19:12:21
【问题描述】:
我在尝试添加属性时收到 OBJECT_CLASS_VIOLATION。修改现有属性就可以了(即使是相同的属性,如果我先从 AD 添加它,然后再修改它)。
首先我以域管理员身份启动,然后:
import ldap, ldap.sasl
l = ldap.initialize('ldap://TEST.DOM.DE')
auth_tokens = ldap.sasl.gssapi('')
l.sasl_interactive_bind_s('', auth_tokens)
l.add_s('CN=dmulder,CN=Users,DC=test,DC=dom,DC=de', [('gecos', ['something'])])
返回此错误:
ldap.OBJECT_CLASS_VIOLATION: {'info': '0000207B: UpdErr: DSID-0305124B, problem 6002 (OBJ_CLASS_VIOLATION), data 0\n', 'desc': 'Object class violation'}
如果我提前在 ADUC 中创建属性,此命令是成功的:
l.modify_s('CN=dmulder,CN=Users,DC=test,DC=dom,DC=de', [(1, 'gecos', None), (0, 'gecos', ['something'])])
add 命令确实适用于 ldapmodify:
> ldapmodify -x -h TEST.DOM.DE -D Administrator@TEST.DOM.DE
dn:CN=dmulder,CN=Users,DC=test,DC=dom,DC=de
changetype: modify
add: gecos
gecos: something
modifying entry "CN=dmulder,CN=Users,DC=test,DC=dom,DC=de"
知道我在这里做错了什么吗?
【问题讨论】:
-
架构允许 rfc2307 属性。显然,由于 ldapmodify 是 能够执行添加,只有 python 模块无法执行相同的操作
-
我的例外是
ldap.OBJECT_CLASS_VIOLATION: {'info': 'no objectClass attribute', 'desc': 'Object class violation'},可以通过添加objectClass来修复。我在ubuntu16上,所有的包都是apt安装的。 -
@obgnaw 你能解释一下你的意思吗?在 add_s() 操作中包含 objectClass 属性对我没有任何作用。如果您找到了解决方案,请在答案中发布详细信息。
-
Server 2008 和Server 2003 的用户等级不同,请发布您的系统版本。
-
我使用的是 Server 2008
标签: python active-directory python-ldap