Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

SID ( Mã định danh bảo mật ) là số nhận dạng duy nhất được gán cho người dùng, nhóm, máy tính hoặc các đối tượng bảo mật khác khi chúng được tạo trong Windows hoặc miền Active Directory. Windows sử dụng SID, nhưng không sử dụng tên người dùng, để kiểm soát quyền truy cập vào các tài nguyên khác nhau:thư mục chia sẻ mạng, khóa đăng ký, đối tượng hệ thống tệp (quyền NTFS), máy in, v.v. Trong bài viết này, chúng tôi sẽ chỉ cho bạn một số cách đơn giản để tìm SID của người dùng, nhóm hoặc máy tính và quy trình ngược lại - cách lấy tên đối tượng theo SID đã biết.

SID (Số nhận dạng bảo mật của Windows) là gì?

Như chúng tôi đã nói, SID (mã định danh bảo mật) cho phép bạn xác định duy nhất một người dùng, nhóm hoặc máy tính trong một phạm vi nhất định (miền hoặc máy tính cục bộ). SID là một chuỗi có dạng:

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

  • 489056535-1467421822-2524099697– đây là số nhận dạng duy nhất của miền đã cấp SID (phần này sẽ giống nhau cho tất cả các đối tượng trong cùng một miền):
  • 1231 - số nhận dạng bảo mật tương đối (RID) của đối tượng. Nó bắt đầu từ 1000 và tăng 1 cho mỗi đối tượng mới. Được cấp bởi bộ điều khiển miền có vai trò FSMO RID Master.

SID của các đối tượng Active Directory được lưu trữ trong ntds.dit cơ sở dữ liệu và SID của người dùng cục bộ và nhóm trong cơ sở dữ liệu cục bộ của Trình quản lý tài khoản bảo mật Windows (SAM) trong HKEY_LOCAL_MACHINE\SAM\SAM khóa đăng ký.

Có cái gọi là SID nổi tiếng trong Windows. Đây là các SID dành cho người dùng và nhóm cài sẵn trên bất kỳ máy tính Windows nào. Ví dụ:

  • S-1-5-32-544 - nhóm quản trị viên tích hợp sẵn
  • S-1-5-32-545 - người dùng địa phương
  • S-1-5-32-555 - Nhóm người dùng máy tính từ xa được phép đăng nhập qua RDP
  • S-1-5-domainID-500 - tài khoản quản trị viên Windows tích hợp sẵn
  • Vv.

Trên Windows, bạn có thể sử dụng các công cụ khác nhau để chuyển đổi SID -> Tên và Tên người dùng -> SID:công cụ whoami, wmic, các lớp WMI, PowerShell hoặc các tiện ích của bên thứ ba.

Cách Tìm Mã nhận dạng Bảo mật Người dùng Cục bộ (SID)?

Để lấy SID của tài khoản người dùng cục bộ, bạn có thể sử dụng wmic công cụ này cho phép bạn truy vấn vùng tên WMI của máy tính. Để lấy SID của người dùng cục bộ test_user, bạn có thể sử dụng lệnh WMIC:

wmic useraccount where name='test_user' get sid

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Lệnh này có thể trả về lỗi nếu kho lưu trữ WMI bị hỏng. Sử dụng hướng dẫn này để sửa chữa kho lưu trữ WMI.

Lệnh trên trả về SID của người dùng cục bộ được chỉ định. Trong ví dụ này - S-1-5-21-1175659216-1321616944-201305354-1005 .

Để liệt kê các SID của tất cả người dùng Windows cục bộ, hãy chạy:

wmic useraccount get name,sid

Nếu bạn cần lấy SID của người dùng hiện tại, hãy chạy lệnh sau:

wmic useraccount where name='%username%' get sid

Bạn có thể truy vấn WMI trực tiếp từ PowerShell:

(Get-WmiObject -Class win32_userAccount -Filter "name='test_user' and domain='$env:computername'").SID

Trong các phiên bản mới hơn của PowerShell Core 7.x, bạn phải sử dụng Get-CimInstance thay vì Get-WmiObject cmdlet.

Nhưng việc lấy SID của người dùng cục bộ thậm chí còn dễ dàng hơn bằng cách sử dụng mô-đun PowerShell tích hợp để quản lý người dùng và nhóm cục bộ (Microsoft.PowerShell.LocalAccounts ).

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

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Theo cách tương tự, bạn có thể lấy SID của một nhóm máy tính cục bộ:

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

Bạn cũng có thể sử dụng các lớp .NET System.Security.Principal.SecurityIdentifier System.Security.Principal.NTAccount để lấy SID của người dùng qua PowerShell:

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

Cách lấy SID người dùng / nhóm trong Active Directory?

Lệnh sau có thể được sử dụng để lấy SID của tài khoản miền hiện tại:

whoami /user

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Bạn có thể tìm thấy SID của người dùng miền Active Directory bằng cách sử dụng WMIC dụng cụ. Bạn phải chỉ định tên miền của mình trong lệnh sau:

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

Để tìm SID của người dùng miền AD, bạn có thể sử dụng lệnh ghép ngắn Get-ADUser là một phần của Mô-đun Active Directory cho Windows PowerShell. Hãy lấy SID cho jabram tài khoản người dùng miền:

Get-ADUser -Identity 'jabrams' | select SID

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Bạn có thể lấy SID của một nhóm QUẢNG CÁO bằng cách sử dụng lệnh ghép ngắn Get-ADGroup:

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

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Nếu mô-đun AD PowerShell chưa được cài đặt trên máy tính của bạn, bạn có thể lấy SID của người dùng từ miền AD bằng cách sử dụng các lớp .Net đã đề cập trước đó:

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

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Cùng một lệnh PowerShell one-liner:

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

Kiểm tra SID Miền và Máy cục bộ của Máy tính

Nếu một máy tính Windows được tham gia vào miền Active Directory, nó sẽ có hai SID khác nhau. SID đầu tiên là mã định danh máy tính cục bộ (Máy SID) và SID thứ hai là mã định danh đối tượng máy tính duy nhất trong AD.

Bạn có thể lấy SID của một máy tính trong miền Active Directory bằng lệnh:

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

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Có thể lấy SID của máy tính cục bộ (Máy SID) bằng cách sử dụng PsGet SID công cụ (https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid). Nhưng bạn phải tải xuống và cài đặt công cụ trên từng máy tính theo cách thủ công.

.\PsGetsid64.exe

Hoặc đơn giản bằng cách cắt 4 ký tự cuối cùng (RID) từ SID của bất kỳ người dùng cục bộ nào:

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

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Điều quan trọng là mỗi máy tính trong miền có một SID cục bộ (máy) duy nhất. Nếu bạn đang nhân bản máy tính hoặc máy ảo hoặc tạo chúng từ một mẫu, bạn phải chạy sysprep tiện ích trước khi tham gia với họ vào miền. Công cụ này đặt lại SID Máy cục bộ. Điều này sẽ giúp bạn tránh khỏi các lỗi quan hệ tin cậy phổ biến.

Làm cách nào để chuyển đổi SID thành Tên người dùng hoặc Tên nhóm?

Để tìm ra tên của tài khoản người dùng bằng SID (một quy trình ngược lại), bạn có thể sử dụng một trong các lệnh sau:

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

Bạn có thể lấy tên người dùng miền bằng SID bằng cách sử dụng mô-đun RSAT-AD-PowerShell:

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

Để tìm tên nhóm miền theo SID đã biết, hãy sử dụng lệnh:

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

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Bạn cũng có thể tìm ra nhóm hoặc tên người dùng theo SID với các lớp PowerShell được tích hợp sẵn (mà không cần sử dụng các mô-đun bổ sung):

$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

Tìm kiếm Active Directory theo SID bằng PowerShell

Nếu bạn không biết loại đối tượng AD mà một SID nhất định thuộc về và lệnh ghép ngắn PowerShell chính xác nào bạn cần sử dụng để tìm nó (Get-AdUser, Get-ADComputer hoặc Get-ADGroup), bạn có thể sử dụng phương pháp phổ biến của tìm kiếm các đối tượng trong miền Active Directory bằng SID sử dụng Get-ADObject lệnh ghép ngắn.

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

IncludeDeletedObjects cho phép bạn tìm kiếm các đối tượng đã xóa trong Thùng rác Active Directory.

Làm thế nào để chuyển đổi SID thành Tên người dùng / Nhóm và Người dùng thành SID?

Trong trường hợp của chúng tôi, đối tượng AD với SID được chỉ định là một máy tính miền (xem thuộc tính objectClass).