AD域的UserAccountControl属性【对AD域开发极有必要】

UserAccountControl属性

因为在修改AD域用户状态的时候发现,一些博客给定的禁用和启用用户的状态值并不一致,参考官网文档和国外的博客发现用户在禁用状态下,也会包含其他属性,这些属性有些是相加的。全量的属性列表如下:

如何参考并使用这个对照表呢?

  • 可以搜索表中关于Disabled的行对应的十进制值,在程序中可以使用作为状态的判断——
    UserAccountControl属性为514546660506608066082里面的值的可以判断为禁用账号;
  • 搜索Enabled,值为54466048262656的以及默认账户类型512可以判断为启用账户;

在开发中,现在的做法是:

self.disabled_user_flag = [514, 546, 66050, 66080, 66082]       # 禁用账户的userAccountControl值列表
self.enabled_user_flag = [512, 544, 66048, 262656]              # 启用账户
...
if en['attributes']['userAccountControl'] in self.disabled_user_flag:		# 遍历用户的userAccountControl属性,在self.disabled_user_flag标志列表中的则为禁用账户
	pass
属性标志 十六进制 十进制 非官方值
SCRIPT 0x0001 1
ACCOUNTDISABLE 0x0002 2
HOMEDIR_REQUIRED 0x0008 8
LOCKOUT 0x0010 16
PASSWD_NOTREQD 0x0020 32
PASSWD_CANT_CHANGE 0x0040 64
ENCRYPTED_TEXT_PWD_ALLOWED 0x0080 128
TEMP_DUPLICATE_ACCOUNT 0x0100 256
NORMAL_ACCOUNT 默认账户 0x0200 512
Disabled Account 禁用账户 0x0202 514 x
Enabled, Password Not Required 启用账户 不需密码 0x0220 544 x
Disabled, Password Not Required 禁用账户 不需密码 0x0222 546 x
INTERDOMAIN_TRUST_ACCOUNT 0x0800 2048
WORKSTATION_TRUST_ACCOUNT 0x1000 4096
SERVER_TRUST_ACCOUNT 0x2000 8192
DONT_EXPIRE_PASSWORD 0x10000 65536
Enabled, Password Doesn’t Expire 启用账户 密码未过期 0x10200 66048 x
Disabled, Password Doesn’t Expire 禁用账户 密码未过期 0x10202 66050 x
Disabled, Password Doesn’t Expire & Not Required 禁用账户 密码未过期且不需密码 0x10220 66080 x
Disabled, Password Doesn’t Expire & Not Required 禁用账户 密码未过期且不需密码 0x10222 66082 x
MNS_LOGON_ACCOUNT 0x20000 131072
SMARTCARD_REQUIRED 0x40000 262144
Enabled, Smartcard Required 下面几个都是需要使用智能卡登录账户(我们不涉及) 0x40200 262656 x
Disabled, Smartcard Required 0x40202 262658 x
Disabled, Smartcard Required, Password Not Required 0x40222 262690 x
Disabled, Smartcard Required, Password Doesn’t Expire 0x50202 328194 x
Disabled, Smartcard Required, Password Doesn’t Expire & Not Required 0x50222 328226 x
TRUSTED_FOR_DELEGATION 0x80000 524288
Domain controller 0x82000 532480
NOT_DELEGATED 0x100000 1048576
USE_DES_KEY_ONLY 0x200000 2097152
DONT_REQ_PREAUTH 0x400000 4194304
PASSWORD_EXPIRED 0x800000 8388608
TRUSTED_TO_AUTH_FOR_DELEGATION 0x1000000 16777216
PARTIAL_SECRETS_ACCOUNT 0x04000000 67108864

属性说明(可不看):

  • SCRIPT – 将运行登录脚本。
  • ACCOUNTDISABLE – 用户帐户已禁用。
  • HOMEDIR_REQUIRED – 主文件夹是必需的。
  • PASSWD_NOTREQD – 不需要密码。
  • PASSWD_CANT_CHANGE – 用户无法更改密码。这是对用户对象的权限。 有关如何以编程方式设置此权限的信息,请访问以下网站:Modifying User Cannot Change Password (LDAP Provider)
  • ENCRYPTED_TEXT_PASSWORD_ALLOWED – 用户可以发送加密的密码。
  • TEMP_DUPLICATE_ACCOUNT – 这是其主要帐户位于另一个域中的用户的帐户。该帐户为用户提供对该域的访问权限,但不提供对任何信任该域的域的访问权限。有时称为本地用户帐户。
  • NORMAL_ACCOUNT – 这是代表典型用户的默认帐户类型。
  • INTERDOMAIN_TRUST_ACCOUNT – 这是允许信任信任其他域的系统域的帐户的许可。
  • WORKSTATION_TRUST_ACCOUNT – 这是运行Microsoft Windows NT 4.0工作站,Microsoft Windows NT 4.0 Server,Microsoft Windows 2000 Professional或Windows 2000 Server的计算机的计算机帐户,并且是此域的成员。
  • SERVER_TRUST_ACCOUNT – 这是域控制器的计算机帐户,该域控制器是该域的成员。
  • DONT_EXPIRE_PASSWD – 表示密码,该密码永远不会在该帐户上过期。
  • MNS_LOGON_ACCOUNT – 这是MNS登录帐户。
  • SMARTCARD_REQUIRED – 设置此标志后,它将强制用户使用智能卡登录。
  • TRUSTED_FOR_DELEGATION – 设置此标志后,将为Kerberos委派信任运行该服务的服务帐户(用户或计算机帐户)。任何此类服务都可以模拟请求该服务的客户端。要为Kerberos委派启用服务,必须在服务帐户的userAccountControl属性上设置此标志。
  • NOT_DELEGATED – 设置此标志时,即使将服务帐户设置为受Kerberos委派的信任,也不会将用户的安全上下文委派给服务。
  • USE_DES_KEY_ONLY – (Windows 2000 / Windows Server 2003)将此主体限制为仅对密钥使用数据加密标准(DES)加密类型。
  • DONT_REQUIRE_PREAUTH – (Windows 2000 / Windows Server 2003)此帐户登录时不需要Kerberos预身份验证。
  • PASSWORD_EXPIRED – (Windows 2000 / Windows Server 2003)用户密码已过期。
  • TRUSTED_TO_AUTH_FOR_DELEGATION –(Windows 2000 / Windows Server 2003)帐户已启用委派。这是对安全性敏感的设置。启用此选项的帐户应受到严格控制。使用此设置,可以在帐户下运行的服务采用客户端的身份,并以该用户身份向网络上的其他远程服务器进行身份验证。
  • PARTIAL_SECRETS_ACCOUNT – (Windows Server 2008 / Windows Server 2008 R2)该帐户是只读域控制器(RODC)。这是对安全性敏感的设置。从RODC删除此设置会损害该服务器上的安全性。

猜你喜欢

转载自blog.csdn.net/qq_33997198/article/details/106336645