我正在使用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)
答案 0 :(得分:1)
注意:下面给出的解决方案 可能 ,只能在即将发布的LDAP3库版本(v2.5)之后运行。目前,我还没有意识到可以为OP提供所需解决方案的解决方法。
检查changelog这里列出的内容:
对于版本v2.5,AD中的pwdLAstSet对0和-1有效。
---目前尚未发布,只是评论(感谢Anton Belov通知)。
如果pwdLastSet
的值设置为0,并且UAC属性不包含标记UF_DONT_EXPIRE_PASSWD
,则会要求用户在下次登录时更改密码。查看Pwd-Last-Set attribute here on MSDN以获取更多信息。
如上所述修改代码会在用户帐户的复选框中显示更改密码的刻度标记。
仅使用您的第一个代码,并将值设置为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...