尝试添加属性时,我得到一个OBJECT_CLASS_VIOLATION。修改现有的属性可以很好地工作(即使是同一个属性,如果我先从AD中添加它,然后再修改它)。python-ldap add_s无法为AD用户添加属性(使用OBJECT_CLASS_VIOLATION)
首先,我执行kinit如域管理员,然后:
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 [email protected]
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模块无法执行相同的操作。 – David
我的异常是'ldap.OBJECT_CLASS_VIOLATION:{'info':'no objectClass attribute','desc':'Object class违反'}',并且可以通过在ubuntu16上添加objectClass.i来修复,所有的包都通过apt来安装。 – obgnaw
@obgnaw你能解释一下你的意思吗?在add_s()操作中包含objectClass属性对我无能为力。如果您找到了解决方案,请在答案中发布详细信息。 – David