UserAccountControl屬性
因爲在修改AD域用戶狀態的時候發現,一些博客給定的禁用和啓用用戶的狀態值並不一致,參考官網文檔和國外的博客發現用戶在禁用狀態下,也會包含其他屬性,這些屬性有些是相加的。全量的屬性列表如下:
如何參考並使用這個對照表呢?
- 可以搜索表中關於
Disabled
的行對應的十進制值,在程序中可以使用作爲狀態的判斷——
UserAccountControl屬性爲514
、546
、66050
、66080
、66082
裏面的值的可以判斷爲禁用賬號; - 搜索
Enabled
,值爲544
、66048
、262656
的以及默認賬戶類型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刪除此設置會損害該服務器上的安全性。