MS AD2008-无法使用Perl Net::LDAPS和userAccountControl属性在下次登录时强制更改密码
我正在使用perl Net::LDAPS连接到Active Directory 2008域控制器,并试图设置“用户下次登录时必须更改密码”选项,但该选项不起作用 我可以创建、修改、删除和移动不同的对象,但我无法获得更改密码设置 这就是我试图做的,但它不起作用: 注意:我正在为Net::LDAPS使用一个自行编写的类包装器,下面的代码可以归结为我试图做的事情的基本内容 # Binding to LDAP Directory: $self->{LDAP_INSTANCE} = Net::LDAPS->new($host); $self->{LDAP_INSTANCE}->bind(dn=>$dn, password=>$password, version=>3 ) my $rc =$self->{LDAP_INSTANCE}->modify( $DN_OF_USER_ACCOUNT, [ replace => [userAccountControl => 0x00800000] ] ); print $rc->error; # Results in an empty string / No error # Note: I have also tried: hex(800000) instead of 0x00800000 as well. 我正在与域管理员帐户绑定,并且我已验证用户帐户的$DN\u是否正确 userAccountControl属性是一个具有许多设置的位字段。将用户的值更改为0x00800000将非常有害,因为这将删除默认的0x200 ADS_UF_NORMAL_帐户 最重要的是: 0x00800000 ADS\u UF\u密码\u过期用户密码已过期。此标志由系统使用Pwd Last Set属性和域策略中的数据创建 如果我们看一下,我们会看到: 上次更改此帐户密码的日期和时间。[…]如果此值设置为0且用户帐户控制属性不包含UF_DONT_EXPIRE_PASSWD标志,则用户必须在下次登录时设置密码 因此,要使密码过期,我们需要将pwdLastSet设置为零。这一点可以通过VBScript中的执行者来证实 在Perl中:MS AD2008-无法使用Perl Net::LDAPS和userAccountControl属性在下次登录时强制更改密码,perl,active-directory,netldap,Perl,Active Directory,Netldap,我正在使用perl Net::LDAPS连接到Active Directory 2008域控制器,并试图设置“用户下次登录时必须更改密码”选项,但该选项不起作用 我可以创建、修改、删除和移动不同的对象,但我无法获得更改密码设置 这就是我试图做的,但它不起作用: 注意:我正在为Net::LDAPS使用一个自行编写的类包装器,下面的代码可以归结为我试图做的事情的基本内容 # Binding to LDAP Directory: $self->{LDAP_INSTANCE} = Net::LDAPS-
# Binding to LDAP Directory:
$self->{LDAP_INSTANCE} = Net::LDAPS->new($host);
$self->{LDAP_INSTANCE}->bind(dn=>$dn, password=>$password, version=>3 )
my $rc =$self->{LDAP_INSTANCE}->modify(
$DN_OF_USER_ACCOUNT,
[ replace => [pwdLastSet => 0] ]
);
print $rc->error;
非常好,感谢您的解释和正确的解决方案。