Bagaimana cara mengetahui SID pengguna atau grup AD dengan nama dan sebaliknya?

Dalam lingkungan Windows, setiap domain dan pengguna lokal, grup, dan objek keamanan lainnya diberi pengidentifikasi unik - Keamanan Identifier atau SID. Ini adalah SID, dan bukan nama pengguna, yang digunakan untuk mengontrol akses ke berbagai sumber daya: folder jaringan, kunci registri, objek sistem file, printer, dll. Pada artikel ini, kami akan menunjukkan beberapa cara sederhana untuk mengetahui SID dari pengguna atau grup (lokal atau dari Active Directory), dan prosedur sebaliknya adalah menentukan nama pengguna atau grup Windows dari SID yang dikenal..

Untuk mengonversi nama pengguna menjadi SID, Anda dapat menggunakan perbedaan pada utilitas dari suite Sysinternals - PsGetSid. Tetapi harus diunduh dan diinstal pada setiap komputer secara manual. Contoh menggunakan PsGetSID untuk SID pengguna dengan nama akun:

psgetsid pc1 \ jjsmith

Mendapatkan akun dengan SID:

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

Menurut pendapat saya, cara termudah untuk mengkonversi SID -> Username dan Username -> SID adalah yang termudah untuk menggunakan perintah command line atau cmdlet PowerShell sederhana:

Konten:

  • Cara mendapatkan SID pengguna lokal?
  • Temukan SID pengguna atau grup dalam domain AD dengan nama
  • Cara mengetahui nama akun pengguna atau grup oleh SID?
  • Cari objek di Active Directory oleh SID

Cara mendapatkan SID pengguna lokal?

Untuk mendapatkan SID dari akun lokal di komputer ini, Anda dapat menggunakan utilitas wmic, yang memungkinkan Anda untuk mengakses namespace WMI komputer. Untuk mendapatkan SID dari pengguna test_user lokal, Anda dapat menggunakan utilitas WMIC:

wmic useraccount di mana nama = "test_user" mendapatkan sisi

Tim mengembalikan SID dari pengguna yang ditentukan kepada kami - S-1-5-21-1175651296-1316126944-203051354-1005.

Jika Anda perlu mengetahui SID dari pengguna saat ini (di mana perintah dijalankan), gunakan perintah berikut:

wmic useraccount di mana nama = "% nama pengguna%" dapatkan

Menggunakan dua kelas .NET System.Security.Principal.SecurityIdentifier dan System.Security.Principal.NTAccount Anda bisa mendapatkan SID pengguna menggunakan PowerShell:

$ objUser = Sistem Objek Baru. Keamanan.Principal.NTAccount ("LOCAL_USER_NAME")
$ strSID = $ objUser.Translate ([System.Security.Principal.SecurityIdentifier])
$ strSID.Value

Temukan SID pengguna atau grup dalam domain AD dengan nama

Anda dapat mengetahui SID dari akun domain saat ini dengan perintah:

whoami / pengguna

Anda dapat menemukan SID pengguna domain menggunakan WMIC. Dalam hal ini, perintah harus menentukan nama domain:

wmic useraccount di mana (name = 'jjsmith' dan domain = "corp.winitpro.ru") mendapatkan sisi

Untuk mendapatkan SID pengguna domain, Anda dapat menggunakan cmdlet Get-ADUser, yang merupakan bagian dari Modul Direktori Aktif untuk Windows PowerShell. Dapatkan SID untuk akun jjsmith:

Dapatkan-ADUser -Identity 'jjsmith' | pilih SID

Anda bisa mendapatkan SID dari grup AD menggunakan cmdlet lain, Get-ADGroup:

Dapatkan-ADGroup -Filter Nama-like "msk-admin *" | Pilih SID

Jika modul AD untuk PowerShell tidak diinstal di komputer Anda, Anda bisa mendapatkan SID pengguna menggunakan kelas .Net yang disebutkan sebelumnya:

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

Perintah PowerShell yang sama pada satu baris:

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

Cara mengetahui nama akun pengguna atau grup oleh SID?

Untuk mengetahui nama akun pengguna dengan SID (prosedur terbalik), Anda dapat menggunakan salah satu dari perintah berikut:

wmic useraccount mana sid = "S-1-3-12-12452343106-3544442455-30354867-1434" dapatkan nama

Di PowerShell, Anda bisa mendapatkan nama pengguna dengan SID-nya menggunakan modul AD untuk PowerShell:

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

Untuk menemukan nama grup domain dengan SID yang dikenal, gunakan perintah:

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

Anda juga dapat mengetahui grup SD dan pengguna menggunakan kelas PowerShell bawaan (tanpa modul tambahan):

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

Cari objek di Active Directory oleh SID

Jika Anda tidak tahu jenis objek AD apa yang dimiliki oleh SID dan cmdlet yang tepat untuk menemukannya (Get-AdUser, Get-ADComputer, atau Get-ADGroup), Anda dapat menggunakan metode universal untuk menemukan objek di Direktori Aktif dengan SID menggunakan Get cmdlet -ADObject.

$ sid = 'S-1-5-21-2470146651-3951111111-2989411117-11119501'
Dapatkan-ADObject -IncludeDeletedObjects -Filter "objectSid -eq '$ sid'" | Pilih-Nama objek, objectClass

SID

Dalam kasus kami, objek AD yang memiliki SID yang diberikan adalah komputer (objectClass).