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

时间:2018-07-13 15:17:26

标签: python ldap python-ldap

我正在使用Python-LDAP与Active Directory进行交互,并努力寻找将用户添加到安全组所需的代码。

我已经编写了用于搜索用户和组的DN的代码,只是不确定要用来添加用户的功能。我碰到了这一点:

LDAPObject.add_s(dn,modlist)

所以我已经有了DN,但是当我搜索modlist时,我得到了:

ldap.modlist.addModlist(entry [,ignore_attr_types = []])

我不确定我是否需要ModifyModlist或addModlist,并且不确定需要发送给它的值。

我以为我可以将用户名和组DN发送到一个函数,它将用户添加到组中……猜猜这不是那么简单吗?

2 个答案:

答案 0 :(得分:1)

当我尝试应用MichaelStröder的anwser时,我遇到TypeError Tuple_to_LDAPMod():期望为元组。要修复该错误,请将modlist内容包装到元组中:

ldap_conn.modify_s(
    group_dn,
    [
        (ldap.MOD_ADD, 'member', [user_dn],)
    ],
)

还要确保user_dn是字节字符串。

答案 1 :(得分:0)

模块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],
    ],
)