उपयोगकर्ता खाता नियंत्रण सक्रिय निर्देशिका में उपयोगकर्ता और कंप्यूटर ऑब्जेक्ट की सबसे महत्वपूर्ण विशेषताओं में से एक है। यह विशेषता AD डोमेन में खाते की स्थिति को निर्धारित करती है:क्या खाता सक्रिय है या बंद है, क्या अगले लॉगऑन पर पासवर्ड बदलने का विकल्प सक्षम है, क्या उपयोगकर्ता अपने पासवर्ड बदल सकते हैं, आदि। हालांकि, सभी व्यवस्थापक नहीं हैं UserAccountControl विशेषता कैसे काम करती है और इसका AD में क्या उपयोग किया जाता है, इसके बारे में पूरी तरह से अवगत हैं
UserAccountControl विशेषता/सक्रिय निर्देशिका में फ़्लैग करें
सक्रिय निर्देशिका उपयोगकर्ता और कंप्यूटर (ADUC, dsa.msc
) में किसी भी AD खाते के गुण खोलें ) कंसोल और खाता . पर जाएं टैब। कृपया, खाता विकल्प . में उपयोगकर्ता विशेषताओं के समूह पर ध्यान दें अनुभाग। यहां आप निम्नलिखित विकल्प देख सकते हैं:
- उपयोगकर्ता को अगले लॉगऑन पर पासवर्ड बदलना होगा;
- उपयोगकर्ता पासवर्ड नहीं बदल सकता;
- पासवर्ड कभी समाप्त नहीं होता; डिफ़ॉल्ट रूप से, AD में डोमेन पासवर्ड नीति के लिए उपयोगकर्ता को समय-समय पर अपना पासवर्ड बदलने की आवश्यकता होती है।
- प्रतिवर्ती एन्क्रिप्शन का उपयोग करके पासवर्ड स्टोर करें (सुरक्षित नहीं);
- खाता अक्षम है;
- इंटरैक्टिव लॉगऑन के लिए स्मार्ट कार्ड आवश्यक है;
- खाता संवेदनशील है और उसे प्रत्यायोजित नहीं किया जा सकता;
- इस खाते के लिए Kerberos DES एन्क्रिप्शन प्रकारों का उपयोग करें;
- यह खाता Kerberos AES 128/256-बिट एन्क्रिप्शन का समर्थन करता है;
- Kerberos पूर्व-प्रमाणीकरण की आवश्यकता नहीं है।
इनमें से प्रत्येक उपयोगकर्ता खाता विशेषता अनिवार्य रूप से एक बिट मान (ध्वज) है जो या तो 1 (True
हो सकता है) ) या 0 (False
) हालाँकि, इन मानों को अलग AD विशेषताओं के रूप में संग्रहीत नहीं किया जाता है, इसके बजाय UserAccountControl विशेषता का उपयोग किया जाता है।
ऊपर निर्दिष्ट सभी विकल्पों का कुल मूल्य UserAccountControl . के मान में संग्रहीत है गुण। इन सभी विकल्पों को अलग-अलग उपयोगकर्ता विशेषताओं में संग्रहीत करने के बजाय, एक सक्रिय निर्देशिका विशेषता का उपयोग किया जाता है। UserAccountControl एक बिटमास्क, . है जिनमें से प्रत्येक बिट एक अलग ध्वज है और इसका मान चालू . है (सच) या बंद (असत्य)। सक्षम खाता विकल्पों के आधार पर उपयोगकर्ता के पास अलग-अलग UserAccountControl विशेषता मान होंगे। आप विशेषता का वर्तमान मान संबंधित विशेषता संपादक टैब में या PowerShell में Get-ADUser cmdlet का उपयोग करके देख सकते हैं:
get-aduser jkelly -properties *|select name,UserAccountControl | ft
इस उदाहरण में, विशेषता का मान 0x10202 . है (दशमलव मान 66050 . है ) इन नंबरों का क्या मतलब है?
AD खातों के उपलब्ध फ़्लैग की तालिका नीचे दी गई है। प्रत्येक ध्वज एक निश्चित UserAccountControl बिट से मेल खाता है, और UserAccountControl मान सभी फ़्लैग के योग के बराबर होता है।
उपयोगकर्ता खाता नियंत्रण ध्वज HEX मान दशमलव मान SCRIPT (लॉगऑन स्क्रिप्ट चलाना)0x00011ACCOUNTDISABLE (खाता अक्षम है)0x00022HOMEDIR_REQUIRED (होम फोल्डर की आवश्यकता है)0x00088LOCKOUT (खाता लॉक है)0x001016PASSWD_NOTREQD (कोई पासवर्ड आवश्यक नहीं है) एन्क्रिप्शन) 0x0080128TEMP_DUPLICATE_ACCOUNT (एक उपयोगकर्ता, जिसका प्राथमिक खाता किसी अन्य डोमेन में है का एक खाता) 0x0100256NORMAL_ACCOUNT (ए डिफ़ॉल्ट खाते, एक ठेठ सक्रिय खाता) 0x0200512INTERDOMAIN_TRUST_ACCOUNT0x08002048WORKSTATION_TRUST_ACCOUNT0x10004096SERVER_TRUST_ACCOUNT0x20008192DONT_EXPIRE_PASSWORD (उपयोगकर्ता पासवर्ड कि सीमा समाप्त नहीं होती खातों) 0x1000065536MNS_LOGON_ACCOUNT0x20000131072SMARTCARD_REQUIRED (नेटवर्क पर लॉग ऑन करने के लिए, उपयोगकर्ता को स्मार्ट कार्ड की आवश्यकता है)0x4000262144TRUSTED_FOR_DELEGATION0x80000524288NOT_DELEGATED0x1000001048576USE_DES_KEY_ONLY0x2000002097152DONT_REQ_PREAUTH (Kerberos पूर्व-प्रमाणीकरण की आवश्यकता नहीं है)0x400000 4194304PASSWORD_EXPIRED (उपयोगकर्ता पासवर्ड समाप्त हो गया है)0x8000008388608TRUSTED_TO_AUTH_FOR_DELEGATION0x100000016777216PARTIAL_SECRETS_ACCOUNT0x0400000067108864उदाहरण के लिए, एक नियमित खाता है जिसके लिए पासवर्ड बदलने की आवश्यकता अक्षम है। UserAccountControl मान की गणना इस प्रकार की जाती है:
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) = 66048
तदनुसार, मेरे उदाहरण (66050) से userAccountControl का मूल्य निम्नानुसार प्राप्त किया गया था:
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) + ACCOUNTDISABLE (2) = 66050
एक अक्षम उपयोगकर्ता खाते में एक userAccountControl मान के रूप में 514 होता है:
(NORMAL_ACCOUNT (512)+ ACCOUNTDISABLE (2) = 514
सामान्य डोमेन ऑब्जेक्ट के लिए डिफ़ॉल्ट UserAccountControl मान:
- एक नियमित विज्ञापन उपयोगकर्ता:0x200 (512);
- एक डोमेन नियंत्रक:0x82000 (532480);
- एक वर्कस्टेशन/सर्वर:0x1000 (4096)।
आप एक निश्चित उपयोगकर्ता खाता नियंत्रण मान वाले AD ऑब्जेक्ट से ऑब्जेक्ट का चयन करने के लिए LDAP फ़िल्टर का उपयोग कर सकते हैं। उदाहरण के लिए, सभी सक्रिय (सामान्य) खाते प्रदर्शित करने के लिए:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=512)"
सभी अक्षम उपयोगकर्ता खातों की सूची प्रदर्शित करें:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=514)"
गैर-समाप्ति पासवर्ड विकल्प वाले खातों की सूची:
Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=66048)"
आप तालिका से आवश्यक बिट्स को जोड़ सकते हैं और कमांड का उपयोग करके AD ऑब्जेक्ट का चयन कर सकते हैं:
$UserAccountControl_hex= 0x10000 + 0x0080 + 0x200000
Get-ADUser -Filter {UserAccountControl -band$UserAccountControl_hex}
PowerShell स्क्रिप्ट के साथ UserAccountControl मानों को डिकोड करना
इसे और अधिक सुविधाजनक बनाने के लिए, मैं UserAccountControl बिटमास्क के मान को मानव-पारदर्शी रूप में स्वचालित रूप से परिवर्तित करने के लिए एक उपकरण रखना चाहता हूं। आइए एक साधारण पावरशेल फ़ंक्शन लिखने का प्रयास करें जो UserAccountControl विशेषता का दशमलव मान लेता है और सक्षम खाता विकल्पों की सूची देता है। चूंकि UserAccountControl एक बिटमास्क है, आप प्रत्येक बिट के लिए एक टेक्स्ट विवरण निर्दिष्ट कर सकते हैं।
मैंने यह पॉवरशेल फ़ंक्शन DecodeUserAccountControl . लिखा है UserAccountControl मान को पढ़ने योग्य रूप में बदलने के लिए:
Function DecodeUserAccountControl ([int]$UAC)
{
$UACPropertyFlags = @(
"SCRIPT",
"ACCOUNTDISABLE",
"RESERVED",
"HOMEDIR_REQUIRED",
"LOCKOUT",
"PASSWD_NOTREQD",
"PASSWD_CANT_CHANGE",
"ENCRYPTED_TEXT_PWD_ALLOWED",
"TEMP_DUPLICATE_ACCOUNT",
"NORMAL_ACCOUNT",
"RESERVED",
"INTERDOMAIN_TRUST_ACCOUNT",
"WORKSTATION_TRUST_ACCOUNT",
"SERVER_TRUST_ACCOUNT",
"RESERVED",
"RESERVED",
"DONT_EXPIRE_PASSWORD",
"MNS_LOGON_ACCOUNT",
"SMARTCARD_REQUIRED",
"TRUSTED_FOR_DELEGATION",
"NOT_DELEGATED",
"USE_DES_KEY_ONLY",
"DONT_REQ_PREAUTH",
"PASSWORD_EXPIRED",
"TRUSTED_TO_AUTH_FOR_DELEGATION",
"RESERVED",
"PARTIAL_SECRETS_ACCOUNT"
"RESERVED"
"RESERVED"
"RESERVED"
"RESERVED"
"RESERVED"
)
return (0..($UACPropertyFlags.Length) | ?{$UAC -bAnd [math]::Pow(2,$_)} | %{$UACPropertyFlags[$_]}) -join ” | ”
}
आइए देखें कि UserAccountControl के 665050 का क्या अर्थ है:
DecodeUserAccountControl 66050
जैसा कि आप देख सकते हैं, स्क्रिप्ट वापस आ गई है कि इस उपयोगकर्ता के लिए निम्नलिखित फ़्लैग सक्षम हैं:
खाता अक्षम | NORMAL_ACCOUNT | DONT_EXPIRE_PASSWORD
उदाहरण के लिए Get-ADUser या Get-ADComputer cmdlets का उपयोग करके AD खातों के बारे में जानकारी सुविधाजनक रूप में प्राप्त करते समय उपयोगकर्ता खाते के बारे में जानकारी प्राप्त करने के लिए एक ही स्क्रिप्ट का उपयोग फ्लाई पर UserAccountControl मानों को डीकोड करने के लिए किया जा सकता है:
get-aduser ms-pam -properties *|select @{n='UsrAcCtrl';e={DecodeUserAccountControl($_.userAccountControl)}}
खाता अक्षम | NORMAL_ACCOUNT | DONT_EXPIRE_PASSWORD
get-adcomputer rome-dc01 -properties *|select @{n='UsrAcCtrl';e={DecodeUserAccountControl($_.userAccountControl)}}
SERVER_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION
AdWord में PowerShell के साथ UserAccoutControl विशेषता कैसे सेट करें?
आप Set-ADUser और Set-ADComputer PowerShell cmdlets का उपयोग करके Active Directory में UserAccountControl विशेषता के अलग-अलग विकल्पों को बदल सकते हैं। इन दोनों cmdlets के अलग-अलग विकल्प हैं, उदाहरण के लिए:
- खाता नहीं दिया गया
- ReversiblePasswordEncryption की अनुमति दें
- पासवर्ड नहीं बदल सकते
- पासवर्डएटलॉगऑन बदलें
- KerberosEncryptionType
- पासवर्ड कभी खत्म नहीं होता
- पासवर्ड की आवश्यकता नहीं है
- प्रिंसिपलAllowedToDelegateToAccount
इसलिए, कुछ उपयोगकर्ता विकल्पों को बदलने के लिए, आपको निम्न कमांड का उपयोग करने की आवश्यकता है:
Set-ADUser jkelly –CannotChangePassword:$true -PasswordNeverExpires:$true
या आप सामान्य सेट-UserAccountControl . का उपयोग कर सकते हैं सीएमडीलेट:
Set-ADAccountControl -Identity jkelly -CannotChangePassword $True -PasswordNeverExpires $True
आप UserAccountControl विशेषता के माध्यम से सटीक मान सेट करके इन दोनों उपयोगकर्ता खाता विकल्पों को सीधे सक्षम भी कर सकते हैं:
Set-ADUser jkelly -Replace @{UserAccountControl= 66048}