एसआईडी (सुरक्षा पहचानकर्ता ) एक विशिष्ट पहचानकर्ता है जो उपयोगकर्ताओं, समूहों, कंप्यूटरों या अन्य सुरक्षा वस्तुओं को तब दिया जाता है जब वे Windows या सक्रिय निर्देशिका डोमेन में बनाए जाते हैं। विंडोज विभिन्न संसाधनों तक पहुंच को नियंत्रित करने के लिए SID का उपयोग करता है, लेकिन उपयोगकर्ता नाम का नहीं:नेटवर्क साझा किए गए फ़ोल्डर, रजिस्ट्री कुंजियाँ, फ़ाइल सिस्टम ऑब्जेक्ट (NTFS अनुमतियाँ), प्रिंटर, आदि। इस लेख में, हम आपको खोजने के कुछ सरल तरीके दिखाएंगे। किसी उपयोगकर्ता, समूह, या कंप्यूटर का SID, और रिवर्स प्रक्रिया - किसी ज्ञात SID द्वारा किसी ऑब्जेक्ट का नाम कैसे प्राप्त करें।
SID (Windows सुरक्षा पहचानकर्ता) क्या है?
जैसा कि हमने कहा, SID (सुरक्षा पहचानकर्ता) आपको एक निश्चित दायरे (डोमेन या स्थानीय कंप्यूटर) के भीतर किसी उपयोगकर्ता, समूह या कंप्यूटर की विशिष्ट पहचान करने की अनुमति देता है। SID प्रपत्र की एक स्ट्रिंग है:
एस-1-5-21-489056535-1467421822-2524099697-1231
- 489056535-1467421822-2524099697- यह उस डोमेन का विशिष्ट पहचानकर्ता है जिसने एसआईडी जारी किया है (यह हिस्सा एक ही डोमेन में सभी वस्तुओं के लिए समान होगा):
- 1231 - वस्तु की सापेक्ष सुरक्षा पहचानकर्ता (RID)। यह 1000 से शुरू होता है और प्रत्येक नई वस्तु के लिए 1 से बढ़ता है। FSMO भूमिका RID मास्टर वाले डोमेन नियंत्रक द्वारा जारी किया गया।
Active Directory ऑब्जेक्ट्स के SIDs ntds.dit
. में स्टोर किए जाते हैं HKEY_LOCAL_MACHINE\SAM\SAM
में स्थानीय विंडोज सुरक्षा खाता प्रबंधक (एसएएम) डेटाबेस में स्थानीय उपयोगकर्ताओं और समूहों के डेटाबेस, और एसआईडी रजिस्ट्री कुंजी।
तथाकथित प्रसिद्ध SIDs हैं विंडोज़ में। ये किसी भी विंडोज कंप्यूटर पर बिल्ट-इन यूजर्स और ग्रुप के लिए SID हैं। उदाहरण के लिए:
S-1-5-32-544
- बिल्ट-इन एडमिनिस्ट्रेटर ग्रुपS-1-5-32-545
- स्थानीय उपयोगकर्ताS-1-5-32-555
- दूरस्थ डेस्कटॉप उपयोगकर्ता समूह जिन्हें आरडीपी के माध्यम से लॉग इन करने की अनुमति हैS-1-5-domainID-500
- बिल्ट-इन विंडोज एडमिनिस्ट्रेटर अकाउंट- आदि
विंडोज़ पर, आप SID -> नाम और उपयोगकर्ता नाम -> SID:whoami टूल, wmic, WMI क्लासेस, पावरशेल, या तृतीय-पक्ष उपयोगिताओं को परिवर्तित करने के लिए विभिन्न टूल का उपयोग कर सकते हैं।
स्थानीय उपयोगकर्ता सुरक्षा पहचानकर्ता (SID) कैसे खोजें?
स्थानीय उपयोगकर्ता खाते का SID प्राप्त करने के लिए, आप wmic . का उपयोग कर सकते हैं टूल, जो आपको कंप्यूटर के WMI नेमस्पेस को क्वेरी करने की अनुमति देता है। स्थानीय उपयोगकर्ता test_user का SID प्राप्त करने के लिए, आप WMIC कमांड का उपयोग कर सकते हैं:
wmic useraccount where name='test_user' get sid
WMI रिपॉजिटरी क्षतिग्रस्त होने पर यह कमांड एक त्रुटि लौटा सकता है। WMI रिपॉजिटरी की मरम्मत के लिए इस गाइड का उपयोग करें।
ऊपर दिए गए कमांड ने निर्दिष्ट स्थानीय उपयोगकर्ता का SID लौटा दिया। इस उदाहरण में - S-1-5-21-1175659216-1321616944-201305354-1005
।
सभी स्थानीय विंडोज उपयोगकर्ताओं के एसआईडी को सूचीबद्ध करने के लिए, रन करें:
wmic useraccount get name,sid
यदि आपको वर्तमान उपयोगकर्ता का SID प्राप्त करने की आवश्यकता है, तो निम्न कमांड चलाएँ:
wmic useraccount where name='%username%' get sid
आप WMI को सीधे PowerShell से क्वेरी कर सकते हैं:
(Get-WmiObject -Class win32_userAccount -Filter "name='test_user' and domain='$env:computername'").SID
Get-CimInstance
. का उपयोग करना चाहिए Get-WmiObject
. के बजाय सीएमडीलेट।
लेकिन स्थानीय उपयोगकर्ताओं और समूहों (Microsoft.PowerShell.LocalAccounts
को प्रबंधित करने के लिए अंतर्निहित PowerShell मॉड्यूल का उपयोग करके स्थानीय उपयोगकर्ता का SID प्राप्त करना और भी आसान है। )।
Get-LocalUser -Name 'test_user' | Select-Object Name, SID
इसी तरह, आप स्थानीय कंप्यूटर के समूह का SID प्राप्त कर सकते हैं:
Get-LocalGroup -Name tstGroup1 | Select-Object Name, SID
आप .NET कक्षाओं का भी उपयोग कर सकते हैं System.Security.Principal.SecurityIdentifier और System.Security.Principal.NTAccount PowerShell के माध्यम से उपयोगकर्ता का SID प्राप्त करने के लिए:
$objUser = New-Object System.Security.Principal.NTAccount("LOCAL_USER_NAME")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
सक्रिय निर्देशिका में उपयोगकर्ता/समूह SID कैसे प्राप्त करें?
वर्तमान डोमेन खाते का SID प्राप्त करने के लिए निम्न कमांड का उपयोग किया जा सकता है:
whoami /user
आप WMIC
. का उपयोग करके एक सक्रिय निर्देशिका डोमेन उपयोगकर्ता का SID ढूंढ सकते हैं उपकरण। आपको निम्न आदेश में अपना डोमेन नाम निर्दिष्ट करना होगा:
wmic useraccount where (name='jjsmith' and domain=′corp.woshub.com′) get sid
किसी AD डोमेन उपयोगकर्ता का SID ढूँढने के लिए, आप Get-ADUser cmdlet का उपयोग कर सकते हैं जो Windows PowerShell के लिए सक्रिय निर्देशिका मॉड्यूल का एक भाग है। आइए jabrams . के लिए SID प्राप्त करें डोमेन उपयोगकर्ता खाता:
Get-ADUser -Identity 'jabrams' | select SID
आप Get-ADGroup cmdlet का उपयोग करके AD समूह का SID प्राप्त कर सकते हैं:
Get-ADGroup -Filter {Name -like "fr-sales-*"} | Select SID
यदि आपके कंप्यूटर पर PowerShell AD मॉड्यूल स्थापित नहीं है, तो आप पहले बताए गए .Net वर्गों का उपयोग करके AD डोमेन से उपयोगकर्ता का SID प्राप्त कर सकते हैं:
$objUser = New-Object System.Security.Principal.NTAccount("corp.woshub.com","jabrams")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
वही पॉवरशेल वन-लाइनर कमांड:
(new-object security.principal.ntaccount “jabrams").translate([security.principal.securityidentifier])
कंप्यूटर के डोमेन और स्थानीय मशीन SID की जांच करना
यदि कोई Windows कंप्यूटर किसी सक्रिय निर्देशिका डोमेन से जुड़ा है, तो उसके पास दो अलग-अलग SID होंगे। पहला SID स्थानीय कंप्यूटर पहचानकर्ता (मशीन SID) है, और दूसरा AD में अद्वितीय कंप्यूटर ऑब्जेक्ट पहचानकर्ता है।
आप कमांड का उपयोग करके एक्टिव डायरेक्ट्री डोमेन में कंप्यूटर का SID प्राप्त कर सकते हैं:
Get-ADComputer mun-rds1 -properties sid|select name,sid
स्थानीय कंप्यूटर का SID (मशीन SID) PsGet का उपयोग करके प्राप्त किया जा सकता है एसआईडी टूल (https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid)। लेकिन आपको प्रत्येक कंप्यूटर पर मैन्युअल रूप से टूल को डाउनलोड और इंस्टॉल करना होगा।
.\PsGetsid64.exe
या बस किसी भी स्थानीय उपयोगकर्ता के SID से अंतिम 4 वर्णों (RID) को ट्रिम करके:
$user=(Get-LocalUser Administrator).sid
$user -replace ".{4}$"
यह महत्वपूर्ण है कि डोमेन के प्रत्येक कंप्यूटर में एक अद्वितीय स्थानीय (मशीन) SID हो। यदि आप कंप्यूटर या वर्चुअल मशीन की क्लोनिंग कर रहे हैं या उन्हें टेम्पलेट से बना रहे हैं, तो आपको
sysprep
चलाना होगा उन्हें डोमेन में शामिल करने से पहले उपयोगिता। यह उपकरण स्थानीय मशीन SID को रीसेट करता है। यह आपको सामान्य विश्वास संबंध त्रुटियों से बचाएगा। SID को उपयोगकर्ता या समूह के नाम में कैसे बदलें?
SID (एक विपरीत प्रक्रिया) द्वारा उपयोगकर्ता खाते का नाम जानने के लिए, आप निम्न आदेशों में से एक का उपयोग कर सकते हैं:
wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name
आप RSAT-AD-PowerShell मॉड्यूल का उपयोग करके SID द्वारा डोमेन उपयोगकर्ता का नाम प्राप्त कर सकते हैं:
Get-ADUser -Identity S-1-3-12-12451234567-1234567890-1234567-1434
किसी ज्ञात SID द्वारा डोमेन समूह का नाम खोजने के लिए, कमांड का उपयोग करें:
Get-ADGroup -Identity S-1-5-21-247647651-3965464288-2949987117-23145222
आप अंतर्निहित पावरशेल कक्षाओं (अतिरिक्त मॉड्यूल का उपयोग किए बिना) के साथ SID द्वारा समूह या उपयोगकर्ता नाम का भी पता लगा सकते हैं:
$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S S-1-3-12-12451234567-1234567890-1234567-1434")
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value
पावरशेल का उपयोग करके SID द्वारा सक्रिय निर्देशिका खोजना
यदि आप नहीं जानते हैं कि एक निश्चित SID किस प्रकार की AD वस्तु से संबंधित है और इसे खोजने के लिए आपको किस सटीक PowerShell cmdlet का उपयोग करने की आवश्यकता है (Get-AdUser, Get-ADComputer, या Get-ADGroup), तो आप इसकी सार्वभौमिक विधि का उपयोग कर सकते हैं Get-ADObject . का उपयोग करके किसी SID द्वारा Active Directory डोमेन में ऑब्जेक्ट खोजना cmdlet.
$sid = ‘S-1-5-21-2412346651-123456789-123456789-12345678’
Get-ADObject –IncludeDeletedObjects -Filter "objectSid -eq '$sid'" | Select-Object name, objectClass
IncludeDeletedObjects
पैरामीटर आपको सक्रिय निर्देशिका रीसायकल बिन में हटाए गए ऑब्जेक्ट की खोज करने की अनुमति देता है।
हमारे मामले में, निर्दिष्ट SID के साथ AD ऑब्जेक्ट एक डोमेन कंप्यूटर है (ऑब्जेक्टक्लास विशेषता देखें)।