[英]How to add user to LDAP group using Python?
我正在使用Python-LDAP与 Active Directory 进行交互,并且努力寻找需要编写哪些代码才能将用户添加到安全组中。
我已经编写了代码来搜索用户和组的 DN,我只是不确定我需要使用什么函数来添加用户。我遇到了这个:
LDAPObject.add_s(dn, modlist)
所以我已经有了 DN,但是当我搜索 modlist 时,我得到了这个:
ldap.modlist.addModlist(entry[, ignore_attr_types=[]])
我不确定是否需要 modifyModlist 或 addModlist,并且不确定需要发送给它的值。
我以为我可以将用户和组 DN 发送到一个函数,然后它将用户添加到组中……猜猜这不是那么简单吗?
模块ldap.modlist只包含用于生成修改列表的便利函数。 您必须调用LDAPObject.modify_s()方法来实际修改组条目。
假设您在变量user_dn 中有用户条目的 DN, group_dn是组条目的 DN, ldap_conn是您的 LDAPObject 实例。
然后你只需使用:
ldap_conn.modify_s(
group_dn,
[
(ldap.MOD_ADD, 'member', [user_dn]),
],
)
当然,您也可以在一次修改操作中删除用户并添加其他用户:
ldap_conn.modify_s(
group_dn,
[
(ldap.MOD_ADD, 'member', [user1_dn, user2_dn]),
(ldap.MOD_DELETE, 'member', [user3_dn, user4_dn]),
],
)
当我尝试应用 Michael Ströder 的 anwser 时,我收到 TypeError Tuple_to_LDAPMod(): expected a tuple 。 要修复该错误,请将 modlist 内容包装到元组中:
ldap_conn.modify_s(
group_dn,
[
(ldap.MOD_ADD, 'member', [user_dn],)
],
)
另外,请确保 user_dn 是字节串。
我收到ldap.OBJECT_CLASS_VIOLATION: {'info': u"attribute 'member' not allowed", 'desc': u'Object class violation'}
在我们的环境中,每个组成员 (UID) 都被列为组中的memberUid
属性,因此这对我们memberUid
:
ldap_conn.modify_s(
group_dn,
[
(ldap.MOD_ADD, 'memberUid', [<uid>],)
],
)
导入 ldap
conn = ldap.initialize('ldap://127.0.0.1') ldap_base = 'dc=example,dc=local'
#改变你的DC
#Group dn 应该是一个字符串
group_dn = 'CN=Group Policy Creator Owners,CN=Users,DC=example,DC=local'
user_dn = b'CN=test1,OU=Users,DC=example,DC=local'
#注意我们没有使用用于键属性对的modlist
conn.modify_s( group_dn, [ (ldap.MOD_ADD, 'member', [user_dn],)], )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.