繁体   English   中英

如何使用 Python 将用户添加到 LDAP 组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM