UserAccountControl সক্রিয় ডিরেক্টরিতে ব্যবহারকারী এবং কম্পিউটার অবজেক্টের সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলির মধ্যে একটি। এই বৈশিষ্ট্যটি 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 মান সমস্ত পতাকার সমষ্টির সমান।
UserAccountControl পতাকা HEX মান দশমিক মান স্ক্রিপ্ট (লগন স্ক্রিপ্ট চলমান) 0x00011Accountdisable (অ্যাকাউন্টটি নিষ্ক্রিয় করা হয়েছে) 0x00022homedir_Required (হোম ফোল্ডারটি প্রয়োজন) 0x00016passwd_notreqd (কোনও পাসওয়ার্ড প্রয়োজন নেই) 0x002032passwd_cant_change (পাসওয়ার্ড পরিবর্তন থেকে বিরত রাখুন) 0x004064encrypted_text_pwd_allowed_trext_pwd_allowed_trext_pwd_allowed এনক্রিপশন) 0x0080128TEMP_DUPLICATE_ACCOUNT (ক ব্যবহারকারী, যার প্রধান অ্যাকাউন্ট অন্য একটি ডোমেনে আছে একটি অ্যাকাউন্ট) 0x0100256NORMAL_ACCOUNT (একটি ডিফল্ট অ্যাকাউন্ট, একটি সাধারন সক্রিয় অ্যাকাউন্ট) 0x0200512INTERDOMAIN_TRUST_ACCOUNT0x08002048WORKSTATION_TRUST_ACCOUNT0x10004096SERVER_TRUST_ACCOUNT0x20008192DONT_EXPIRE_PASSWORD (ব্যবহারকারী পাসওয়ার্ড মেয়াদ শেষ না অ্যাকাউন্ট) 0x1000065536MNS_LOGON_ACCOUNT0x20000131072SMARTCARD_REQUIRED (নেটওয়ার্ক লগ অন করার জন্য, ব্যবহারকারীর একটি স্মার্ট কার্ড দরকার 4194304PASSWORD_EXPIRED (ব্যবহারকারীর পাসওয়ার্ডের মেয়াদ শেষ হয়ে গেছে) 0x8000008388608TRUSTED_TO_AUTH_FOR_DELEGATION0x100000016777216PARTIAL_SECRETS_ACCOUNT0x04000000864000008467উদাহরণস্বরূপ, একটি নিয়মিত অ্যাকাউন্ট রয়েছে যার জন্য পাসওয়ার্ড পরিবর্তন করার প্রয়োজনীয়তা অক্ষম করা হয়েছে। 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 মান:
- একজন নিয়মিত AD ব্যবহারকারী: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 বিটমাস্কের মানকে একটি মানব-স্বচ্ছ ফর্মে রূপান্তর করার জন্য একটি টুল রাখতে চাই। আসুন একটি সাধারণ PowerShell ফাংশন লেখার চেষ্টা করি যা UserAccountControl অ্যাট্রিবিউটের দশমিক মান নেয় এবং সক্রিয় অ্যাকাউন্ট বিকল্পগুলির তালিকা প্রদান করে। যেহেতু UserAccountControl একটি বিটমাস্ক, আপনি প্রতিটি বিটে একটি পাঠ্য বিবরণ বরাদ্দ করতে পারেন।
আমি এই PowerShell ফাংশন 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-এর 66050 এর মানে কী তা পরীক্ষা করা যাক:
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
কিভাবে PowerShell এর মাধ্যমে AD-তে UserAccoutControl অ্যাট্রিবিউট সেট করবেন?
আপনি Set-ADUser এবং Set-ADComputer PowerShell cmdlets ব্যবহার করে সক্রিয় ডিরেক্টরিতে UserAccountControl বৈশিষ্ট্যের পৃথক বিকল্পগুলি পরিবর্তন করতে পারেন। এই উভয় cmdlet এর আলাদা বিকল্প আছে, উদাহরণস্বরূপ:
- AccountNotDelegated
- AllowReversiblePasswordEncryption
- পাসওয়ার্ড পরিবর্তন করা যায় না
- PasswordAtLogon পরিবর্তন করুন
- KerberosEncryptionType
- পাসওয়ার্ড কখনোই মেয়াদ শেষ হয় না
- পাসওয়ার্ডের প্রয়োজন নেই
- PrincipalsAllowedToDelegateToAccount
সুতরাং, কিছু ব্যবহারকারীর বিকল্প পরিবর্তন করতে, আপনাকে নিম্নলিখিত কমান্ডটি ব্যবহার করতে হবে:
Set-ADUser jkelly –CannotChangePassword:$true -PasswordNeverExpires:$true
অথবা আপনি জেনেরিক Set-UserAccountControl ব্যবহার করতে পারেন cmdlet:
Set-ADAccountControl -Identity jkelly -CannotChangePassword $True -PasswordNeverExpires $True
আপনি UserAccountControl অ্যাট্রিবিউটের মাধ্যমে সঠিক মান সেট করে সরাসরি এই উভয় ব্যবহারকারী অ্যাকাউন্ট বিকল্পগুলিকে সক্ষম করতে পারেন:
Set-ADUser jkelly -Replace @{UserAccountControl= 66048}