V okolju Windows je vsaki domeni in lokalnemu uporabniku, skupini in drugim varnostnim objektom dodeljen en identifikator - Varnost Identifikator ali SID. SID in ne uporabniško ime se uporablja za nadzor dostopa do različnih virov: omrežnih map, registrskih ključev, predmetov datotečnega sistema, tiskalnikov itd. V tem članku bomo prikazali nekaj preprostih načinov, kako ugotoviti SID uporabnika ali skupine (lokalno ali iz Active Directory), obratni postopek pa je določitev imena uporabnika ali skupine Windows iz znanega SID-a.
Če želite uporabniško ime pretvoriti v SID, lahko uporabite razlike v pripomočku iz paketa Sysinternals - PsGetSid. Vendar ga bo treba na vsak računalnik prenesti in namestiti ročno. Primer uporabe PsGetSID za SID uporabnika po imenu računa:psgetsid pc1 \ jjsmith
Pridobivanje računa s strani SID:
psgetsid S-1-5-21-1175651296-1316133944-203321314-1005
Po mojem mnenju je najlažji način pretvorbe SID -> Uporabniško ime in uporabniško ime -> SID najpreprostejši za uporabo ukazov ukazne vrstice ali preprostih ukaznih kod PowerShell:
Vsebina:
- Kako pridobiti SID lokalnega uporabnika?
- Poiščite SID uporabnika ali skupine v AD domeni
- Kako ugotoviti ime uporabniškega računa ali skupine po SID-u?
- Poiščite predmete v Active Directory po SID-u
Kako pridobiti SID lokalnega uporabnika?
Če želite dobiti SID lokalnega računa v tem računalniku, lahko uporabite pripomoček wmic, ki omogoča dostop do imenskega prostora WMI računalnika. Če želite dobiti SID lokalnega uporabniškega testnega uporabnika, lahko uporabite pripomoček WMIC:
wmic useraccount, kjer name = "test_user" dobite sid
Skupina nam je vrnila SID navedenega uporabnika - S-1-5-21-1175651296-1316126944-203051354-1005.
Če morate najti SID trenutnega uporabnika (pod katerim se izvaja ukaz), uporabite naslednji ukaz:
wmic useraccount, kjer name = "% username%" dobite sid
Uporaba dveh .NET razredov System.Security.Principal.SecurityIdentifier in System.Security.Principal.NTAccount uporabniškega SID-a lahko dobite s programom PowerShell:
$ objUser = Nov objektni sistem.Security.Principal.NTAccount ("LOCAL_USER_NAME")
$ strSID = $ objUser.Translate ([System.Security.Principal.SecurityIdentifier])
$ strSID.Value
Poiščite SID uporabnika ali skupine v AD domeni
SID trenutnega računa domene lahko ugotovite z ukazom:
whoami / uporabnik
SID uporabnika domene lahko ugotovite z uporabo WMIC. V tem primeru mora ukaz določiti ime domene:
wmic useraccount kjer (ime = 'jjsmith' in domena = "corp.winitpro.ru") dobite sid
Za pridobitev uporabniškega domene SID lahko uporabite ukazni ukaz Get-ADUser, ki je del modula Active Directory za Windows PowerShell. Pridobite SID za jjsmith račun:
Get-ADUser -Identity 'jjsmith' | izberite SID
SID skupine AD lahko dobite z drugim ukaznim ukazom Get-ADGroup:
Get-ADGroup -Filter Ime-podobno "msk-admin *" | Izberite SID
Če modul AD za PowerShell ni nameščen v vašem računalniku, lahko SID uporabnika pridobite z uporabo prej omenjenih razredov .Net:
$ objUser = Nov objektni sistem.Security.Principal.NTAccount ("corp.wintpro.ru", "jjsmith")
$ strSID = $ objUser.Translate ([System.Security.Principal.SecurityIdentifier])
$ strSID.Value
Isti ukaz PowerShell v eni vrstici:
(nov-objekt security.principal.ntaccount "jjsmith"). prevedi ([security.principal.securityidentifier])
Kako ugotoviti ime uporabniškega računa ali skupine po SID-u?
Če želite izvedeti ime uporabniškega računa po SID-u (obratni postopek), lahko uporabite enega od naslednjih ukazov:
wmic useraccount, kjer sid = "S-1-3-12-12452343106-3544442455-30354867-1434" dobite ime
V programu PowerShell lahko s pomočjo modula AD za PowerShell pridobite uporabniško ime za njegov SID:
Get-ADUser -Identity S-1-5-21-247647651-3952524288-2944781117-23711116
Če želite najti ime domene po znanem SID-ju, uporabite ukaz:
Get-ADGroup -Identity S-1-5-21-247647651-3952524288-2944781117-23711116
Skupino in uporabnika SD lahko ugotovite tudi z vgrajenimi razredi PowerShell (brez dodatnih modulov):
$ objSID = Nov objektni sistem.Security.Principal.SecurityIdentifier ("S-1-5-21-2470456651-3958312488-29145117-23345716")
$ objUser = $ objSID.Translate ([System.Security.Principal.NTAccount])
$ objUser.Value
Poiščite predmete v Active Directory po SID-u
Če ne veste, kakšnemu tipu AD predmeta pripada SID in kateri natančen ukaznik uporabiti, da ga najdete (Get-AdUser, Get-ADComputer ali Get-ADGroup), lahko uporabite univerzalni način za iskanje predmetov v Active Directory s strani SID s pomočjo ukaznega mesta Get cmdlet -ADObjekt.
$ sid = 'S-1-5-21-2470146651-3951111111-2989411117-11119501'
Get-ADObject -IncludeDeletedObjects -Filter "objectSid -eq '$ sid'" | Izberite-Ime predmeta, objektClass
SID
V našem primeru je objekt AD, ki ima dani SID, računalnik (objectClass).