Jak zjistit SID uživatele nebo skupiny AD podle jména a naopak?

V prostředí Windows je každé doméně a místnímu uživateli, skupině a dalším objektům zabezpečení přiřazen jedinečný identifikátor - Zabezpečení Identifikátor nebo SID. K řízení přístupu k různým prostředkům: síťovým složkám, klíčům registru, objektům systému souborů, tiskárnám atd. Se používá SID, nikoli uživatelské jméno. V tomto článku si ukážeme několik jednoduchých způsobů, jak zjistit SID uživatele nebo skupiny (místní nebo ze služby Active Directory) a opačným postupem je zjistit jméno uživatele nebo skupiny Windows ze známého SID.

Chcete-li převést uživatelské jméno na SID, můžete použít rozdíly v obslužném programu ze sady Sysinternals - PsGetSid. Bude však muset být stažen a nainstalován na každém počítači ručně. Příklad použití PsGetSID pro uživatelské SID podle názvu účtu:

psgetsid pc1 \ jjsmith

Získání účtu pomocí SID:

psgetsid S-1-5-21-1175651296-1316133944-203321314-1005

Podle mého názoru je nejjednodušší způsob, jak převést SID -> Uživatelské jméno a Uživatelské jméno -> SID, nejjednodušší použití příkazů příkazového řádku nebo jednoduchých rutin PowerShell:

Obsah:

  • Jak získat SID místního uživatele?
  • Vyhledejte SID uživatele nebo skupiny v doméně AD podle názvu
  • Jak zjistit název uživatelského účtu nebo skupiny pomocí SID?
  • Hledejte objekty ve službě Active Directory podle SID

Jak získat SID místního uživatele?

Chcete-li získat SID místního účtu v tomto počítači, můžete použít tento nástroj wmic, což vám umožňuje přístup k oboru názvů WMI počítače. Chcete-li získat SID místního uživatele test_user, můžete použít nástroj WMIC:

wmic useraccount kde name = "test_user" get sid

Tým nám vrátil SID zadaného uživatele - S-1-5-21-1175651296-1316126944-203051354-1005.

Pokud potřebujete zjistit SID aktuálního uživatele (pod kterým je příkaz spuštěn), použijte následující příkaz:

wmic useraccount kde name = "% username%" get sid

Pomocí dvou .NET tříd System.Security.Principal.SecurityIdentifier a System.Security.Principal.NTAccount můžete získat SID uživatele pomocí PowerShell:

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

Vyhledejte SID uživatele nebo skupiny v doméně AD podle názvu

SID aktuálního účtu domény můžete zjistit příkazem:

whoami / uživatel

SID uživatele domény můžete zjistit pomocí WMIC. V tomto případě musí příkaz specifikovat název domény:

wmic useraccount kde (name = 'jjsmith' a domain = "corp.winitpro.ru") get sid

Chcete-li získat identifikátor SID uživatele domény, můžete použít rutinu Get-ADUser, která je součástí modulu Active Directory pro Windows PowerShell. Získejte SID pro účet jjsmith:

Get-ADUser - Identita 'jjsmith' |. vyberte SID

SID skupiny AD můžete získat pomocí jiného rutina, Get-ADGroup:

Get-ADGroup -Filter Name-like "msk-admin *" | Vyberte SID

Pokud ve vašem počítači není nainstalován AD modul pro PowerShell, můžete získat SID uživatele pomocí výše zmíněných tříd .Net:

$ objUser = New-Object System.Security.Principal.NTAccount ("corp.wintpro.ru", "jjsmith")
$ strSID = $ objUser.Translate ([System.Security.Principal.SecurityIdentifier])
$ strSID.Value

Stejný příkaz PowerShell na jednom řádku:

(new-object security.principal.ntaccount “jjsmith”). translate ([security.principal.securityidentifier])

Jak zjistit název uživatelského účtu nebo skupiny pomocí SID?

Chcete-li zjistit název uživatelského účtu pomocí SID (reverzní postup), můžete použít jeden z následujících příkazů:

wmic useraccount where sid = "S-1-3-12-12452343106-3544442455-30354867-1434" získat jméno

V PowerShell můžete uživatelské jméno získat podle jeho SID pomocí AD modulu pro PowerShell:

Get-ADUser -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

Chcete-li najít název skupiny domén podle známého SID, použijte příkaz:

Get-ADGroup -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

Skupinu SD a uživatele můžete také zjistit pomocí vestavěných tříd PowerShell (bez dalších modulů):

$ objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-2470456651-3958312488-29145117-23345716")
$ objUser = $ objSID.Translate ([System.Security.Principal.NTAccount])
$ objUser.Value

Hledejte objekty ve službě Active Directory podle SID

Pokud nevíte, jaký typ objektu AD patří k určitému SID a do kterého přesného rutina cmdlet se má najít (Get-AdUser, Get-ADComputer nebo Get-ADGroup), můžete použít univerzální metodu pro nalezení objektů ve službě Active Directory pomocí SID pomocí Get cmdlet -ADObjekt.

$ sid = 'S-1-5-21-2470146651-3951111111-2989411117-11119501'
Get-ADObject --IncludeDeletedObjects -Filter "objectSid -eq '$ sid'" | Vyberte název objektu, objectClass

SID

V našem případě je objekt AD, který má dané SID, počítač (objectClass).