1

我正在使用 ldap3 使用 python 脚本在 Active Directory (Win 2012R2) 中创建用户帐户。我无法设置的唯一一个属性是“用户下次登录时必须更改密码”。您能否建议一种在使用创建后立即标记此复选框的方法?我试图更改 UserAccountControl 和 pwdLastSet 属性但没有运气(

-1 是唯一一个有效参数

password_expire = {"pwdLastSet": (MODIFY_REPLACE, [-1])}
connect.modify(dn=user_dn, changes=password_expire)

PASSWORD_EXPIRED 0x800000 8388608

password_expire = {"UserAccountControl": (MODIFY_REPLACE, [8388608])}
connect.modify(dn=user_dn, changes=password_expire)
4

1 回答 1

1

注意:下面给出的解决方案可能仅在即将发布的 LDAP3 库版本 (v2.5) 之后才有效。目前,我不知道可以为 OP 提供所需解决方案的变通方法。

在此处查看更新日志,其中列出了:

对于版本 v2.5,AD 中的 pwdLAstSet 对 0 和 -1 有效。

---暂未发布,仅发表评论(感谢 Anton Belov 通知)。


如果 的值pwdLastSet设置为 0,并且 UAC 属性不包含 flag UF_DONT_EXPIRE_PASSWD,则用户将在下次登录时被要求更改密码。在 MSDN 上查看Pwd-Last-Set 属性以获取更多信息。

按照上面的建议修改您的代码将在用户帐户的复选框中显示用于更改密码的勾选标记。

仅使用您的第一个代码,并将值设置为 0,如下所述。

password_expire = {"pwdLastSet": (MODIFY_REPLACE, [-1])}  # // use 0 instead of -1.
connect.modify(dn=user_dn, changes=password_expire)
# // you don't need to play with UserAccountControl further...
于 2018-02-13T11:53:21.717 回答