Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

SID (ตัวระบุความปลอดภัย ) เป็นตัวระบุเฉพาะที่กำหนดให้กับผู้ใช้ กลุ่ม คอมพิวเตอร์ หรือออบเจ็กต์ความปลอดภัยอื่นๆ เมื่อสร้างขึ้นในโดเมน Windows หรือ Active Directory Windows ใช้ SID แต่ไม่ใช่ชื่อผู้ใช้ เพื่อควบคุมการเข้าถึงทรัพยากรต่างๆ:โฟลเดอร์แชร์เครือข่าย คีย์รีจิสทรี ออบเจ็กต์ระบบไฟล์ (สิทธิ์ NTFS) เครื่องพิมพ์ ฯลฯ ในบทความนี้ เราจะแสดงวิธีง่ายๆ ในการค้นหา SID ของผู้ใช้ กลุ่ม หรือคอมพิวเตอร์ และขั้นตอนย้อนกลับ – วิธีรับชื่อวัตถุด้วย SID ที่รู้จัก

SID (Windows Security Identifier) ​​คืออะไร

ดังที่เราได้กล่าวไปแล้ว SID (ตัวระบุความปลอดภัย) ช่วยให้คุณสามารถระบุผู้ใช้ กลุ่ม หรือคอมพิวเตอร์ภายในขอบเขตที่กำหนด (โดเมนหรือคอมพิวเตอร์ท้องถิ่น) ได้โดยไม่ซ้ำกัน SID เป็นสตริงของรูปแบบ:

S-1-5-21–489056535-1467421822-2524099697–1231

  • 489056535-1467421822-2524099697– นี่คือตัวระบุเฉพาะของโดเมนที่ออก SID (ส่วนนี้จะเหมือนกันสำหรับวัตถุทั้งหมดในโดเมนเดียวกัน):
  • 1231 – ตัวระบุความปลอดภัยสัมพัทธ์ของอ็อบเจ็กต์ (RID) เริ่มต้นที่ 1,000 และเพิ่มขึ้น 1 สำหรับแต่ละวัตถุใหม่ ออกโดย Domain Controller ที่มีบทบาท FSMO RID Master

SID ของวัตถุ Active Directory ถูกเก็บไว้ใน ntds.dit ฐานข้อมูล และ SID ของผู้ใช้และกลุ่มในเครื่องในฐานข้อมูล Windows Security Account Manager (SAM) ในเครื่องใน HKEY_LOCAL_MACHINE\SAM\SAM รีจิสตรีคีย์

มีสิ่งที่เรียกว่า SID ที่รู้จักกันดี ในวินโดวส์ นี่คือ SID สำหรับผู้ใช้และกลุ่มที่มีอยู่แล้วในคอมพิวเตอร์ Windows ตัวอย่างเช่น:

  • S-1-5-32-544 – กลุ่มผู้ดูแลระบบในตัว
  • S-1-5-32-545 – ผู้ใช้ในท้องถิ่น
  • S-1-5-32-555 – กลุ่มผู้ใช้เดสก์ท็อประยะไกลที่ได้รับอนุญาตให้เข้าสู่ระบบผ่าน RDP
  • S-1-5-domainID-500 – บัญชีผู้ดูแลระบบ Windows ในตัว
  • เป็นต้น

ใน Windows คุณสามารถใช้เครื่องมือต่างๆ เพื่อแปลง SID -> ชื่อและชื่อผู้ใช้ -> SID:เครื่องมือ whoami, wmic, คลาส WMI, PowerShell หรือยูทิลิตี้ของบริษัทอื่น

จะค้นหา Local User Security Identifier (SID) ได้อย่างไร

ในการรับ SID ของบัญชีผู้ใช้ในเครื่อง คุณสามารถใช้ wmic ซึ่งช่วยให้คุณสามารถค้นหาเนมสเปซ WMI ของคอมพิวเตอร์ได้ ในการรับ SID ของผู้ใช้ภายในเครื่อง test_user คุณสามารถใช้คำสั่ง WMIC:

wmic useraccount where name='test_user' get sid

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

คำสั่งนี้สามารถส่งคืนข้อผิดพลาดได้หากที่เก็บ WMI เสียหาย ใช้คู่มือนี้เพื่อซ่อมแซมที่เก็บ WMI

คำสั่งด้านบนส่งคืน SID ของผู้ใช้ในเครื่องที่ระบุ ในตัวอย่างนี้ – S-1-5-21-1175659216-1321616944-201305354-1005 .

ในการแสดงรายการ SID ของผู้ใช้ Windows ในเครื่องทั้งหมด ให้เรียกใช้:

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

ใน PowerShell Core 7.x เวอร์ชันใหม่กว่า คุณต้องใช้ Get-CimInstance แทนที่จะเป็น Get-WmiObject cmdlet

แต่การรับ SID ของผู้ใช้ในพื้นที่จะง่ายยิ่งขึ้นโดยใช้โมดูล PowerShell ในตัวสำหรับจัดการผู้ใช้และกลุ่มในเครื่อง (Microsoft.PowerShell.LocalAccounts )

Get-LocalUser -Name 'test_user' | Select-Object Name, SID

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

ในทำนองเดียวกัน คุณจะได้รับ SID ของกลุ่มเครื่องคอมพิวเตอร์:

Get-LocalGroup -Name tstGroup1 | Select-Object Name, SID

คุณยังสามารถใช้คลาส .NET System.Security.Principal.SecurityIdentifier และ System.Security.Principal.NTAccount เพื่อรับ SID ของผู้ใช้ผ่าน PowerShell:

$objUser = New-Object System.Security.Principal.NTAccount("LOCAL_USER_NAME")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

จะรับ SID ผู้ใช้/กลุ่มใน Active Directory ได้อย่างไร

คำสั่งต่อไปนี้สามารถใช้เพื่อรับ SID ของบัญชีโดเมนปัจจุบัน:

whoami /user

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

คุณค้นหา SID ของผู้ใช้โดเมน Active Directory ได้โดยใช้ WMIC เครื่องมือ. คุณต้องระบุชื่อโดเมนของคุณในคำสั่งต่อไปนี้:

wmic useraccount where (name='jjsmith' and domain=′corp.woshub.com′) get sid

เมื่อต้องการค้นหา SID ของผู้ใช้โดเมน AD คุณสามารถใช้ Get-ADUser cmdlet ที่เป็นส่วนหนึ่งของ Active Directory Module สำหรับ Windows PowerShell มารับ SID สำหรับ jabrams บัญชีผู้ใช้โดเมน:

Get-ADUser -Identity 'jabrams' | select SID

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

คุณสามารถรับ SID ของกลุ่ม AD โดยใช้ Get-ADGroup cmdlet:

Get-ADGroup -Filter {Name -like "fr-sales-*"} | Select SID

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

หากไม่ได้ติดตั้งโมดูล PowerShell AD บนคอมพิวเตอร์ของคุณ คุณสามารถรับ SID ของผู้ใช้จากโดเมน AD โดยใช้คลาส .Net ที่กล่าวถึงก่อนหน้านี้:

$objUser = New-Object System.Security.Principal.NTAccount("corp.woshub.com","jabrams")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

คำสั่ง One-liner ของ PowerShell เดียวกัน:

(new-object security.principal.ntaccount “jabrams").translate([security.principal.securityidentifier])

การตรวจสอบโดเมนและ SID เครื่องในเครื่องของคอมพิวเตอร์

หากคอมพิวเตอร์ Windows เข้าร่วมโดเมน Active Directory คอมพิวเตอร์นั้นจะมี SID ต่างกันสองรายการ SID แรกคือตัวระบุเครื่องคอมพิวเตอร์ (Machine SID) และตัวที่สองคือตัวระบุวัตถุคอมพิวเตอร์เฉพาะใน AD

คุณสามารถรับ SID ของคอมพิวเตอร์ในโดเมน Active Directory โดยใช้คำสั่ง:

Get-ADComputer mun-rds1 -properties sid|select name,sid

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

SID ของคอมพิวเตอร์ในพื้นที่ (Machine SID) สามารถรับได้โดยใช้ PsGet SID เครื่องมือ (https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid) แต่คุณต้องดาวน์โหลดและติดตั้งเครื่องมือในคอมพิวเตอร์แต่ละเครื่องด้วยตนเอง

.\PsGetsid64.exe

หรือเพียงแค่ตัดอักขระ 4 ตัวสุดท้าย (RID) จาก SID ของผู้ใช้ในเครื่อง:

$user=(Get-LocalUser Administrator).sid
$user -replace ".{4}$"

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

เป็นสิ่งสำคัญที่คอมพิวเตอร์แต่ละเครื่องในโดเมนต้องมี SID (เครื่อง) ภายในเครื่องที่ไม่ซ้ำกัน หากคุณกำลังโคลนคอมพิวเตอร์หรือเครื่องเสมือนหรือสร้างจากเทมเพลต คุณต้องเรียกใช้ sysprep ยูทิลิตีก่อนที่จะเข้าร่วมกับโดเมน เครื่องมือนี้จะรีเซ็ต SID ของเครื่องในเครื่อง วิธีนี้จะช่วยคุณประหยัดจากข้อผิดพลาดเกี่ยวกับความสัมพันธ์ที่เชื่อถือได้ทั่วไป

จะแปลง SID เป็นชื่อผู้ใช้หรือชื่อกลุ่มได้อย่างไร

หากต้องการทราบชื่อบัญชีผู้ใช้โดยใช้ SID (ขั้นตอนย้อนกลับ) คุณสามารถใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:

wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name

คุณสามารถรับชื่อผู้ใช้โดเมนโดยใช้ SID โดยใช้โมดูล RSAT-AD-PowerShell:

Get-ADUser -Identity S-1-3-12-12451234567-1234567890-1234567-1434

หากต้องการค้นหาชื่อกลุ่มโดเมนด้วย SID ที่รู้จัก ให้ใช้คำสั่ง:

Get-ADGroup -Identity S-1-5-21-247647651-3965464288-2949987117-23145222

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

คุณยังสามารถค้นหากลุ่มหรือชื่อผู้ใช้ด้วย SID ด้วยคลาส PowerShell ในตัว (โดยไม่ต้องใช้โมดูลเพิ่มเติม):

$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

การค้นหา Active Directory ด้วย SID โดยใช้ PowerShell

หากคุณไม่ทราบว่าวัตถุ AD ประเภทใดที่เป็นของ SID และ PowerShell cmdlet ที่แน่นอนที่คุณต้องใช้เพื่อค้นหา (Get-AdUser, Get-ADComputer หรือ Get-ADGroup) คุณสามารถใช้วิธีสากลของ ค้นหาวัตถุในโดเมน Active Directory ด้วย SID โดยใช้ Get-ADObject cmdlet.

$sid = ‘S-1-5-21-2412346651-123456789-123456789-12345678’
Get-ADObject –IncludeDeletedObjects -Filter "objectSid -eq '$sid'" | Select-Object name, objectClass

IncludeDeletedObjects พารามิเตอร์ช่วยให้คุณค้นหาวัตถุที่ถูกลบใน Active Directory Recycle Bin

วิธีการแปลง SID เป็นชื่อผู้ใช้ / ชื่อกลุ่มและผู้ใช้เป็น SID?

ในกรณีของเรา วัตถุ AD ที่มี SID ที่ระบุคือคอมพิวเตอร์โดเมน (ดูแอตทริบิวต์ objectClass)