如何通过LDAP请求启用或禁用AD用户帐户?

4

目前我已经能够在LDAP中找到用户,但我不知道如何启用或禁用它们。

作为第二个问题,如果我的帐户具有域管理员权限,我是否可以从LDAP启用或禁用帐户?

注意:这是关于运行在Windows 2003上的Microsoft Active Directory。

我知道我可以使用以下命令检查活动用户

(!(useraccountcontrol:1.2.840.113556.1.4.803:=2))

禁用用户:

(useraccountcontrol:1.2.840.113556.1.4.803:=2)

问题是如何设置属性,以使其不会丢失其中的其他二进制标志。
2个回答

5

在这里,你需要使用一些逻辑。想要禁用用户,你需要设置禁用位(2)。因此:

const long ADS_UF_ACCOUNTDISABLE = 0x00000002;
long userAccountControl = //currentUacValue
long newUserAccountControl = (userAccountControl | ADS_UF_ACCOUNTDISABLE);

要启用一个账户,我们需要清除禁用位:

long userAccountControl = //currentUacValue
long newUserAccountControl = (userAccountControl & ~ADS_UF_ACCOUNTDISABLE)

0
如果你正在使用ldapsearch和ldapmodify在Linux上进行编程,而且你不是很了解C语言的话,你也可以从当前值中减去2。
$id="accountname"
USERCN=$(ldapsearch sAMAccountName=$id 2>/dev/null|grep "cn: " | sed 's/cn: //g')
USERDN="CN=${USERCN},CN=Users,DC=example,DC=com"

uac=$(ldapsearch sAMAccountName="$id" -LLL userAccountControl 2>/dev/null |grep userAccountControl: | awk '{print $2}')

uac="$(($uac-2))"
echo "dn: $USERDN
changetype: modify
replace: userAccountControl
userAccountControl: $uac" | ldapmodify -Q

我们在这里使用Kerberos来向AD进行身份验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接