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刪除此設置會損害該服務器上的安全性。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章