Kako saznati SID korisnika ili AD grupe po imenu i obrnuto?

U Windows okruženju, svakoj domeni i lokalnom korisniku, grupi i ostalim sigurnosnim objektima dodjeljuje se jedinstveni identifikator - sigurnosti identifikator ili SID. Upravo se SID, a ne korisničko ime, koristi za kontrolu pristupa različitim resursima: mrežnim mapama, ključevima registra, objektima datotečnog sustava, pisačima itd. U ovom ćemo članku pokazati nekoliko jednostavnih načina za otkrivanje SID-a korisnika ili grupe (lokalnog ili iz Active Directory-a), a obrnuti postupak je određivanje imena Windows korisnika ili grupe iz poznatog SID-a.

Za pretvaranje korisničkog imena u SID možete koristiti razlike u uslužnom programu iz Sysinternals paketa - PsGetSid. Ali morat će ga se ručno preuzeti i instalirati na svako računalo. Primjer korištenja PsGetSID za SID korisnika po imenu računa:

psgetsid pc1 \ jjsmith

Dohvaćanje računa putem SID-a:

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

Po mom mišljenju, najlakši način pretvorbe SID -> korisničko ime i korisničko ime -> SID je najlakši za korištenje naredbi naredbenog retka ili jednostavnih PowerShell cmdleta:

sadržaj:

  • Kako do lokalnog korisnika SID?
  • Nađi SID korisnika ili grupe u AD domeni
  • Kako saznati ime korisničkog računa ili grupe prema SID-u?
  • Potražite objekte u Active Directoryu putem SID-a

Kako do lokalnog korisnika SID?

Da biste dobili SID lokalnog računa na ovom računalu, možete upotrijebiti uslužni program wmic, koji vam omogućava pristup WMI prostoru računala. Da biste dobili SID lokalnog korisnika test_user, možete koristiti uslužni program WMIC:

wmic useraccount gdje se name = "test_user" dobije sid

Tim nam je vratio SID navedenog korisnika - S-1-5-21-1175651296-1316126944-203051354-1005.

Ako trebate saznati SID trenutnog korisnika (pod kojim se izvršava naredba), upotrijebite sljedeću naredbu:

wmic useraccount gdje se name = "% username%" dobije sid

Korištenje dvije klase .NET System.Security.Principal.SecurityIdentifier i System.Security.Principal.NTAccount možete dobiti korisnički SID pomoću PowerShell-a:

$ objUser = Novi objektni sustav.Sigurnost.Principal.NTAccount ("LOCAL_USER_NAME")
$ strSID = $ objUser.Translate ([System.Security.Principal.SecurityIdentifier])
$ strSID.Value

Nađi SID korisnika ili grupe u AD domeni

SID trenutnog računa domene možete saznati pomoću naredbe:

whoami / korisnik

SID korisnika domene možete saznati pomoću WMIC-a. U tom slučaju naredba mora navesti naziv domene:

wmic useraccount gdje (ime = 'jjsmith' i domena = "corp.winitpro.ru") dobivaju sid

Za dobivanje SID korisnika domene možete koristiti Get-ADUser cmdlet, koji je dio modula Active Directory za Windows PowerShell. Nabavite SID za jjsmith račun:

Get-ADUser -Identity 'jjsmith' | odaberite SID

SID AD grupe možete dobiti pomoću drugog cmdleta, Get-ADGroup:

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

Ako AD modul za PowerShell nije instaliran na vašem računalu, SID korisnika možete dobiti pomoću .Net klasa spomenutih ranije:

$ objUser = Novi objektni sistem.Security.Principal.NTAccount ("corp.wintpro.ru", "jjsmith")
$ strSID = $ objUser.Translate ([System.Security.Principal.SecurityIdentifier])
$ strSID.Value

Ista naredba PowerShell u jednom retku:

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

Kako saznati ime korisničkog računa ili grupe prema SID-u?

Da biste saznali naziv korisničkog računa prema SID-u (obrnuti postupak), možete koristiti jednu od sljedećih naredbi:

wmic useraccount gdje sid = "S-1-3-12-12452343106-3544442455-30354867-1434" dobili naziv

Na PowerShellu možete dobiti korisničko ime za njegov SID pomoću AD modula za PowerShell:

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

Da biste pronašli naziv grupe domena prema poznatom SID-u, upotrijebite naredbu:

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

SD grupu i korisnika također možete saznati pomoću ugrađenih PowerShell klasa (bez dodatnih modula):

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

Potražite objekte u Active Directoryu putem SID-a

Ako ne znate kojoj vrsti AD objekta pripada SID i koji točan cmdlet da biste ga pronašli (Get-AdUser, Get-ADComputer ili Get-ADGroup), možete koristiti univerzalnu metodu za pronalazak objekata u Active Directoryu pomoću SID pomoću Get cmdlet -ADObject.

$ sid = 'S-1-5-21-2470146651-3951111111-2989411117-11119501'
Get-ADObject -IncludeDeletedObjects -Filter "objectSid -eq '$ sid'" | Select-Object name, objectClass

SID

U našem slučaju, AD objekt koji ima zadani SID je računalo (objectClass).