我正在使用Python-LDAP与Active Directory进行交互,并努力寻找将用户添加到安全组所需的代码。
我已经编写了用于搜索用户和组的DN的代码,只是不确定要用来添加用户的功能。我碰到了这一点:
LDAPObject.add_s(dn,modlist)
所以我已经有了DN,但是当我搜索modlist时,我得到了:
ldap.modlist.addModlist(entry [,ignore_attr_types = []])
我不确定我是否需要ModifyModlist或addModlist,并且不确定需要发送给它的值。
我以为我可以将用户名和组DN发送到一个函数,它将用户添加到组中……猜猜这不是那么简单吗?
答案 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],
],
)