Как узнать sid всех пользователей windows

Как определить имя пользователя Windows по его SID и наоборот – получить SID по имени учетной записи

SID (Security IDentifier) – это уникальный идентификатор, который присваивается пользователям, группам, компьютерам или другим объектам безопасности при их создании в Windows или Active Directory. Windows использует SID, а не имя пользователя для контроля доступа к различным ресурсам: сетевым папкам, ключам реестра, объектам файловой системы (NTFS разрешения), принтерам и т.д. В этой статье мы покажем несколько простых способов получить SID пользователя, группы или компьютера, и обратную процедуру – получить объект по известному SID.

Содержание:

  • Что такое SID объекта в Windows?
  • Как получить SID локального пользователя?
  • Узнать SID пользователя или группы в домене Active Directory
  • Получить SID компьютера
  • Как узнать имя пользователя или группы по известному SID?
  • Поиск объектов в Active Directory по SID

Что такое SID объекта в Windows?

Как мы уже сказали, SID (security identifier) позволяет уникально идентифицировать пользовали, группу или компьютер в пределах определенной области (домена или локального компьютера). SID представляет собой строку вида:

S-1-5-21-2927053466-1818515551-28245911311103.
В данном примере:

  • 2927053466-1818515551-2824591131 – это уникальный идентификатор домена, выдавшего SID (у всего объекта в одном домене эта часть будет одинакова)
  • 1103 – относительный идентификатор безопасности объекта (RID). Начинается с 1000 и увеличивается на 1 для каждого нового объекта. Выдается контроллером домена с FSMO ролью RID Master)

SIDы объектов Active Directory хранятся в базе ntds.dit, а SIDы локальных пользователей и групп в локальной базе диспетчера учетных записей Windows (SAM, Security Account Manager в ветке реестра HKEY_LOCAL_MACHINESAMSAM).

В Windows есть так называемые известные идентификаторы безопасности (Well-known SID). Это SID встроенных (BuiltIn) пользователей и групп, которые есть на любых компьютерах Windows. Например:

  • S-1-5-32-544
    – встроенная группу Administrators
  • S-1-5-32-545
    – локальные пользователи
  • S-1-5-32-555
    – группа Remote Desktop Users, которым разрешен вход по RDP
  • S-1-5-domainID-500
    – учетная запись встроенного администратора Windows
  • И т.д.

В Windows можно использовать различные средства для преобразования SID -> Name и Username -> SID: утилиту whoami, wmic, WMI, классы PowerShell или сторонние утилиты.

Как получить SID локального пользователя?

Чтобы получить SID локальной учетной записи, можно воспользоваться утилитой wmic, которая позволяет обратится к пространству имен WMI (Windows Management Instrumentation) компьютера.

wmic useraccount where name='test_user' get sid

Узнать SID пользователя через WMI

Команда может вернуть ошибку, если репозиторий WMI поврежден. Воспользуйтесь этой инструкцией для восстановления WMI репозитория.

Команда вернула SID указанного пользователя —
S-1-5-21-1175651296-1316126944-203051354-1005
.

Чтобы вывести список SID всех локальных пользователей Windows, выполните:

wmic useraccount get name,sid.

Если нужно узнать SID текущего пользователя (под которым выполняется команда), используйте такую команду:

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

Можно обратится к WMI напрямую из PowerShell:

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

В новых версиях PowerShell Core 7.x вместо команды Get-WmiObject нужно использовать Get-CimInstance.

Но еще проще получить SID локального пользователя с помощью встроенного PowerShell модуля управления локальными пользователями и группами (Microsoft.PowerShell.LocalAccounts).

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

powershell получить sid локалього пользователя в Windows

По аналогии можно получить SID локальной группы:

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

Также вы можете использовать.NET классы System.Security.Principal.SecurityIdentifier и System.Security.Principal.NTAccount для получения SID пользователя с помощью PowerShell:

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

Узнать SID пользователя или группы в домене Active Directory

Вы можете узнать SID своей доменной учетной записи командой:

whoami /user

whoami user getsid

Получить SID пользователя домена Active Directory можно с помощью WMIC. В этом случае в команде нужно указать имя домена:

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

Для получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell. Получим SID для доменного пользователя jjsmith:

Get-ADUser -Identity 'jjsmith' | select SID

get-aduser select sid

Вы можете получить SID группы AD с помощью командлета Get-ADGroup:

Get-ADGroup -Filter {Name -like "msk-admin*"} | Select SID

Get-ADGroup получить sid доменной группы

Если на вашем компьютере не установлен модуль AD для PowerShell, вы можете получить SID пользователя с помощью классов .Net:

$objUser = New-Object System.Security.Principal.NTAccount("corp.wintpro.ru","jjsmith")

$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

PowerShell - get SID via SecurityIdentifier and NTAccountЭта же команда PowerShell в одну строку:

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

Получить SID компьютера

Если компьютер с Windows добавлен в домен Active Directory, у него будет два разных SID. Первый SID – идентификатор локального компьютера (Machine SID), а второе – уникальный идентификатор компьютера в AD.

SID компьютера в домене Active Directory можно получить с помощью команды:

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

get-adcomputer команда для получения SID компьютера в домене Active Directory

SID локального компьютера (Machine SID) можно получить с помощью бесплатной утилиты PsGetsid (https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid): Но ее придется скачивать и устанавливать на каждый компьютер вручную.

.PsGetsid64.exe

Или просто, обрезав последние 4 символа RID и SID любого локального пользователя:

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

PsGetsid6 вывести machine sid локального компьютера

Важно, чтобы у каждого компьютера в домене был уникальный локальный SID. Если вы клонируете компьютеры или виртуальные машины, или создаете их из одного шаблона, то перед тем как добавить их в домен нужно выполнить команду sysprep. Эта утилита сбрасывает локальный Machine SID. Это избавит вас от частых ошибок “Не удалось восстановить доверительные отношения между рабочей станцией и доменом”.

Как узнать имя пользователя или группы по известному SID?

Чтобы узнать имя учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:

wmic useraccount where sid='S-1-3-12-12452343106-3544442455-30354867-1434' get name

Для поиска имени доменного пользователя по SID используйте командлеты из модуля
RSAT-AD-PowerShell
:

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

Чтобы определить имя группы по известному SID, используйте команду:

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

Get-ADGroup найти группу по SID

Также можно узнать получить SID группы и пользователя с помощью встроенных классов PowerShell (без использования дополнительных модулей):

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

Поиск объектов в Active Directory по SID

Если вы не знаете к какому типу объекта AD относится SID и какой точно командлет нужно использовать для его поиска (Get-AdUser, Get-ADComputer или Get-ADGroup), вы можете использовать универсальный метод поиска объектов в Active Directory по SID с помощью командлета Get-ADObject

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

Get-ADObject поиск объектов в AD по известному SID

В нашем случае объект AD, который имеет данный SID, является компьютером (objectClass=computer).

Обновлено 10.03.2021

как узнать sid пользователя windows

Добрый день уважаемые читатели, сегодня мы продолжим изучение Active Directory, а точнее его сущностей. Под сущностью понимается некий объект, в нашем случае это учетная запись пользователя, но их список куда больше. Наша сегодняшняя задача изучить как узнать sid пользователя windows в домене.

Что такое Sid windows

Давайте для начала с вами выясним определение SID или Security Identifier > это идентификатор безопасности, который используется в семействе операционных систем Windows для идентификации объекта:

  • Группа безопасности
  • Пользователь
  • Компьютер
  • Организационная единица
  • Принтер

SID во время создания объекта, присваивается ему , в домене Active Directory за это отвечает мастер роль RID. В рамках домена, каждый SID должен быть уникален, в отличии от имени, так как Ивановых Иванов Ивановичей, может быть много, а вот отличаться они будут логином и SID. Для операционной системы Windows, важнее сиды объектов, она же их использует и для контроля прав доступа на различные корпоративные ресурсы:

  • Папки и файлы
  • Принтеры
  • Доступ к внешним ресурсам

Структура SID

Давайте разбираться из каких частей состоит Security IDentifier.

Впереди идет версия сида, далее Генеральная область Authority — это ссылка на систему источник, которая его выпустила. В операционных системах Windows версия  Security IDentifier сейчас одна и равна она 1, Генеральная область Authority имеет значения 1,3,5, для Microsoft Exchange она 9. Далее в сиде следует 1 или более идентификаторов Sub Authority, а за ними идет RID (Relative IDentificator) локальный для данного Sub Authority номер субъекта безопасности.

Структура SID

По мимо этого, в любой ос Windows существуют встроенные или BuiltIn группы и учетные записи, например администратор или гость, в каждой ос виндоус они имеют одинаковые SID значения. Посмотреть вы их можете в оснастке Управление компьютером.

Как узнать sid пользователя windows в домене-2

Сделаны они для того, что если у вас нет Active Directory, то вы могли бы администрировать данные системы с помощью них. Все SID для данных учетных записей находятся в локальной базе данных Windows, под названием Security Account Manager или SAM. Все сиды пользователей домена лежат в базе Active Directory в файле NTDS.dit.

База Security Account Manager

Давайте посмотрим за, что отвечает Security Account Manager:

  • Сопоставление имен с SID и обратно, некий такой DNS для учетных записей
  • Проверяет пароли, авторизовывает (принимает участие в процессе входа пользователей в ОС)
  • Ведет статистику, кто последний входил, количество входов, кто сколько раз ввел не тот пароль, короче аудит
  • Контролирует политика паролей учетных записей, в случае чего может блокировать учетные записи.
  • Ведет учет, кто в какие группы входит
  • Производит защиты самого себя
  • Дает программный интерфейс для управления базой учетных записей

Хранится SAM (Security Account Manager) в реестре Windows. Как открыть реестр windows, я уже описывал не однократно, переходим в ветку.

HKEY_LOCAL_MACHINESAMSAM

Если вы кликните правым кликом и из контекстного меню выберете Разрешения, то обнаружите, что права доступа есть только у системы, а вот у администраторов локальной станции их нет, но при желании можно их получить, это лишний механизм защиты, так как можно вытащить хэши учетных записей и попытаться их взломать.

Как узнать sid пользователя windows в домене-3

SAM это библиотека samsrv.dll, которая работает в Windows в виде процесса lsass.exe, увидеть это можно в диспетчере задач.

Security Account Manager

1 способ узнать sid пользователя, команда WMIC

Для примера я все буду показывать на своей рабочей станции с установленной в ней Windows Server 2012 R2, станция принадлежит домену Active Directory. Первый метод, это использование старого, доброго WMIC инструментария (Windows Management Instrumentation). Все, что вам нужно, это знать имя пользователя, точнее его логин. Чтобы посмотреть список локальных пользователей введите команду

На выходе вы получите список локальных пользователей.

способ узнать sid пользователя, команда WMIC

Чтобы выяснить все логины доменных пользователей вводим команду

Net user «пользователи домена» /domain

Я вам это уже рассказывал в заметке Как узнать имена учетных записей Администраторов домена. На выходе получите, что то такое

Как узнать sid пользователя windows в домене-3

Далее зная логин все просто вводим

wmic useraccount where name=»admdc» get sid

Как видите все работает.

Как узнать sid пользователя windows в домене-4

Можно наоборот по SID узнать логин пользователя, потребуется это в тех случаях, когда например в списках доступа у вас видится сид, и вы хотите узнать кому он принадлежал.

wmic useraccount where sid=»S-1-5-21-2071342971-2054724104-2057240633-1001″ get name

Еще с помощью WMI вы можете реализовать вот, что укажите имя компьютера (для локального) или домена (для доменного пользователя). Ниже пример получения SID локальной рабочей станции

wmic useraccount where (name=»Администратор» and domain=»%computername%») get sid

Для доменной структуры

wmic useraccount where (name=»Администратор» and domain=»aetp») get sid

способ узнать sid пользователя, команда WMIC-2

Получить логин по SID аналогично предыдущей команду.

wmic useraccount where (sid=»S-1-5-21-613421863-3366779934-4260147692-500″ and domain=»aetp») get name

2 способ узнать sid пользователя, команда Whoami

Тоже довольно старенькая команда из cmd.exe. Вводим

Получаем полный сид текущего залогиненного пользователя.

способ узнать sid пользователя, команда Whoami

Если ввести Whoami /logonid, то можно получить logonid, выглядит он вот так S-1-5-5-0-595920

Если ввести ключ /all, то вы увидите, все sid локальных (bultin) групп и пользователей

способ узнать sid пользователя, команда Whoami-2

Так же вы увидите сведения о привилегиях.

способ узнать sid пользователя, команда Whoami-3

На мой взгляд, данный метод, немного проще первого, так как требует ввода меньшего количества ключей.

3 способ узнать sid пользователя, ADUC и ADSIedit

В третьем способе мы воспользуемся средствами графического интерфейса, а точнее самой оснастке Active Directory пользователи и компьютеры. В ней есть встроенный механизм называется редактор атрибутов Active Directory. Открываем вкладку Вид и ставим галку Дополнительные параметры, да забыл отметить нужно быть членом группы Администраторы схемы.

узнать sid пользователя, ADUC и ADSIedit-1

После чего заходим в свойства учетной записи, вкладка Редактор атрибутов и находим там поле objectSid.

узнать sid пользователя, ADUC и ADSIedit-2

Так же SID можно посмотреть и во встроенной оснастке ADSIedit, подключаетесь там к контексту именования имен и заходите в свойства нужной учетной записи.

узнать sid пользователя, ADUC и ADSIedit-4

Да чуть не забыл в Windows Server 2012 R2 есть такое средство как Центр администрирования Active Directory, ищите там нужную учетную запись и в ней находите пункт SID.

узнать sid пользователя, ADUC и ADSIedit-3

4 способ узнать sid пользователя, утилита PsGetSid

Есть такая замечательная утилита от Microsoft од названием PsGetSid.

Скачать PsGetSid можно по ссылке https://technet.microsoft.com/en-us/sysinternals/bb897417.aspx

Когда вы скачаете и разархивируете файл, вы получите папку с большим набором утилит, среди них будет PsGetSid.

узнать sid пользователя, утилита PsGetSid-1

смысл у данной утилиты очень простой, она входит в состав Sysinternals и умеет получать SID пользователя по его имени и наоборот, умеет получать как локальных пользователей, так и доменных.

Вводим команду psgetsid имя компьютералогин учетки

psgetsid adm999admdc

и наоборот, выясним имя по SID:

psgetsid S-1-5-21-613421863-3366779934-4260147692-1312

узнать sid пользователя, утилита PsGetSid-2

5 способ узнать sid пользователя, PowerShell и System.Security.Principal.NTAccount

Пятым методом будет использование в powershell класса System.Security.Principal.NTAccount. Для домена Active Directory.

$objUser = New-Object System.Security.Principal.NTAccount(«домен», «логин учетки»)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

sid wmi powershell

Для локального пользователя команда будет такой.

$objUser = New-Object System.Security.Principal.NTAccount(«логин»)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

sid wmi powershell-2Обратная ситуация получаем по SID имя пользователя

$objSID = New-Object System.Security.Principal.SecurityIdentifier («S-1-5-21-613421863-3366779934-4260147692-1312»)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

6 способ узнать sid пользователя, Get-ADUser

Снова воспользуемся командлетами powershell Get-ADUser. вводим команду для получения SID доменного пользователя.

Get-ADUser -Identity ‘логин’ | select SID

получить наоборот логин по sid

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

узнать sid пользователя, Get-ADUser

Как массово определить SID пользователя

Все описанные выше методы хороши, когда вам нужно найти SID для одного или двух пользователей, а как быть если у вас это пачка логинов. Например мне это нужно было при предоставлении прав. Предположим, что у меня есть текстовый файл со списком логинов, каждый на новой строке. Мне нужно для каждого определить его Security Identifier.

Файл со списком пользователей домена

В этом нам поможет скрипт PowerShell. Откройте ISE.

$users_file = «C:scriptsusers.txt»

foreach ($line in (Get-Content $users_file))
{
$username = ($Line -split «\»)[1]
$user = Get-ADUser $username -Server «DC4.root.pyatilistnik.org»

$Result = [ordered]@{
user = $line
SID = $user.SID
}

New-Object PSObject -Property $Result
}

$Result

На выходе будет удобный список, при желании можно все экспортировать в csv или txt файл.

Как массово определить SID пользователя

На этом у меня все с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Вы наверняка пытались управлять разрешениями определенных файлов, папок или часто просматриваете реестр Windows, то может показаться, что вы видели некоторые строковые значения типа S-1-5-21-281723897-98365329832-7382047462- 600. Эти значения известны как идентификаторы безопасности или SID. Давайте разберем, что такое SID пользователя в Windows 10 и какие способы его узнать. 

Что такое SID пользователя в Windows?

Идентификатор безопасности или SID пользователя в Windows 10 является единственным значащим значением, которое служит для идентификации принципа безопасности или группы безопасности в Windows. Поэтому можно сказать, что SID пользователя в Windows 10 похож на паспорт, который присваивается каждому компьютеру во время установки операционной системы. Кроме того, этот идентификатор может быть полезен во время выполнения определенных команд, связанных с безопасностью нашего компьютера, поэтому давайте разберем, как узнать SID пользователя в Windows 10.

Как узнать SID пользователя в Windows с помощью cmd

Одним из самых быстрых способов узнать идентификатор пользователя SID в Windows 10, — это воспользоваться командной строкой. Откройте командную строку и введите ниже команды, которые соответствуют вашим требованиям. 

channel

  1. Имя SID используемое в настоящее время: введите команду  whoami /user и нажмите Enter.
  2. Имя SID определенного пользователя: введите в командую строку wmic useraccount where name="хомячок" get name,sid. Где «хомячок» — это фактическое имя пользователя.
  3. Все SID пользователей в Windows: введите  wmic useraccount get name,sid.

Узнать SID пользователя windows через CMD

Узнать идентификатор SID пользователя в Windows через реестр

  1. Нажмите Win + R и введите в диалоговое окно regedit, затем нажмите Enter.
  2. В реестре скопируйте/вставьте или перейдите по пути HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList.
  3. Ниже значения ProfileList, Вы увидите всех пользователей и их идентификаторы SID.

Узнать идентификатор SID пользователя через реестр


Смотрите еще:

  • Служба профилей пользователей не удалось войти в систему windows 10
  • Как создать локальную учетную запись Пользователя В Windows 10
  • Как включить или отключить учетную запись пользователя в Windows 10
  • Как переименовать локальную учетную запись пользователя в Windows 10
  • Изменить пароль пользователя Windows с помощью командной строки 

[ Telegram | Поддержать ]

Операционная система Windows для идентификации использует специальный идентификатор безопасности (Security Identifier, SID), который присваивается каждой учетной записи пользователя (а также компьютера или группы) при ее создании. В отличие от имени каждый SID уникален, что позволяет системе однозначно идентифицировать пользователя. Поэтому операционная система оперирует именно SID-ами и использует их для контроля доступа к различным ресурсам — принтерам, файлам и папкам и т.п.

Примечание. Говоря об уникальности SID, надо сделать одну оговорку. В Windows существуют так называемые встроенные (BuiltIn) учетные записи, такие как Administrator или Guest. SID-ы этих записей одинаковы в каждом экземпляре Windows вне зависимости от версии ОС. Это дает администратору возможность более-менее  централизованно управлять доступом при отсутствии доменной структуры.

SID для локальных учетных записей храниться базе данных диспетчера учетных записей (Security Account Manager, SAM) на локальном компьютере, для доменных — в базе Active Directory. И сегодня речь пойдет о том, как можно узнать SID пользователя по его имени и наоборот, как выяснить имя пользователя по его SID.

Whoami

Когда требуется посмотреть SID текущего пользователя, то проще всего воспользоваться утилитой whoami. Для этого надо открыть консоль cmd и выполнить команду:

whoami /user

узнаем SID пользователя с помощью whoami

WMIC

В том случае, когда необходимо узнать SID произвольного пользователя, можно воспользоваться Windows Management Instrumentation (WMI). Один из инструментов для работы с WMI — утилита WMIC. Так например, узнать SID пользователя Kirill можно такой командой:

wmic useraccount where name=′Kirill′ get sid

А можно и наоборот, выяснить имя пользователя по его SID:

wmic useraccount where sid=′S-1-5-21-4178654016-3479515840-607560339-1000′ get name

узнаем SID локального пользователя с помощью wmic

Дополнительно в WMI-запросе можно указать имя компьютера (для локального) или домена (для доменного пользователя). Например эта команда выведет SID локального администратора:

wmic useraccount where (name=′administrator′ and domain=′%computername%′) get sid

а эта — доменного:

wmic useraccount where (name=′administrator′ and domain=′contoso′) get sid

узнаем SID локального иили доменного администратора с помощью wmic

Для обычного пользователя все также, узнаем SID по имени:

wmic useraccount where (name=′kirill′ and domain=′contoso′) get sid

и имя по SID:

wmic useraccount where (sid=′S-1-5-21-2404695605-4156858507-746700462-1001′ and domain=′contoso′) get name

узнаем SID доменного пользователя с помощью wmic

Примечание. В запросе вместо имени компьютерадомена можно использовать переменные %computername% и %userdomain%.

PowerShell и WMI

PowerShell также позволяет работать с WMI. Для примера обратимся к классу win32_userAccount и выведем SID доменного:

([wmi]″win32_userAccount.Domain=′contoso′, Name=′Kirill′″).sid

и локального пользователя:

([wmi]″win32_userAccount.Domain=′wks1′, Name=′Petya′″).sid

Также вместо имени компьютера  и домена можно указывать переменные окружения $env:computername и $env:userdomain, например:

([wmi]″win32_userAccount.Domain=$env:computername, Name=′Petya′″).sid

узнаем SID пользователя с помощью wmi

Для обратной операции (узнать имя пользователя по SID) нам потребуется использовать свойство SID класса win32_SID. Например:

[wmi]″win32_SID.SID=′S-1-5-21-4178654016-3479515840-607560339-1002′″).AccountName

узнаем имя пользователя по его SID с помощью wmi

Как вариант, для работы с WMI можно использовать командлет Get-WmiObject (или Get-CimInstance). Например так мы узнаем SID пользователя:

(Get-WmiObject -Class win32_userAccount -Filter ″name=′Kirill′ and domain=′Contoso′″).SID

узнаем SID пользователя с помощью Get-WmiObject

а так его имя:

(Get-WmiObject -Class win32_userAccount -Filter ″SID=′S-1-5-21-2404695905-416858507-746700462-1001′″).Name

узнаем имя пользователя по SID с помощью Get-WmiObject

PowerShell и .NET

Также узнать SID пользователя можно с помощью .NET класса System.Security.Principal.NTAccount. Этот класс используется для представления пользователя или группы. Для получения SID локального пользователя надо создать новый объект этого класса и передать ему в виде параметра имя пользователя, а затем с помощью метода Translate перевести объект пользователя в объект класса System.Security.Principal.SecurityIdentifier, который предназначен для представления SID пользователя или группы:

$User = New-Object System.Security.Principal.NTAccount(″Kirill″)
$SID = $User.Translate([System.Security.Principal.SecurityIdentifier])
$SID.Value

Для доменного пользователя процедура идентична, только в виде параметра передаются имя пользователя и имя домена:

$User = New-Object System.Security.Principal.NTAccount(″Contoso″,″Kirill″)
$SID = $User.Translate([System.Security.Principal.SecurityIdentifier])
$SID.Value

узнаем SID пользователя с помощью .Net

Для обратной процедуры получения имени по SID делаем наоборот — сначала создаем объект класса System.Security.Principal.SecurityIdentifier и передаем ему в виде параметра SID пользователя, а затем переводим его в объект класса System.Security.Principal.NTAccount и выводим свойство Value, содержащее имя пользователя:

$SID = New-Object System.Security.Principal.NTAccount(″S-1-5-21-4178654016-3479515840-607560339-1000″)
$User = $SID.Translate([System.Security.Principal.NTAccount])
$User.Value

узнаем имя пользователя по SID с помощью .Net

PsGetSid

Как видите, встроенных средств для выяснения SID в Windows предостаточно, но для полноты картины возьмем еще одно, от стороннего разработчика.

PsGetSid — утилита командной строки от Sysinternals, входящая в состав пакета PsTools. PsGetSid умеет получать SID пользователя по его имени и наоборот, работает как с локальными, так и с доменными аккаунтами. Утилита не требует установки, ее достаточно скопировать на нужный компьютер и запустить.

Для примера запросим SID пользователя по его имени:

psgetsid wks10Kirill

и наоборот, выясним имя по SID:

psgetsid S-1-5-21-438167859-634674341-1098546566-1001

узнаем имя пользователя по SID с помощью psgetsid

В данной статье рассмотрено несколько способов, с помощью которых можно узнать идентификатор безопасности (SID) пользователя в операционной системе Windows 10.

SID (Security Identifier) — идентификатор безопасности, это уникальный идентификатор (код) который присваивается любой создаваемой доменной или локальной учетным записям, а также группе и другим объектам безопасности.

Операционная система использует именно идентификаторы безопасности (SID) для контроля доступа к различным ресурсам, таким как объекты файловой системы, ключам реестра, сетевым каталогам, что означает, что даже если вы измените имя пользователя, то это не повлияет на какие-либо предварительные настройки для этой учетной записи, поскольку каждая конфигурация привязана к SID, который остается постоянным.

Идентификатор безопасности может быть полезен во время выполнения определенных команд, связанных с безопасностью компьютера.

Содержание

  1. Как узнать идентификатор безопасности (SID) пользователя в командной строке
  2. Как узнать идентификатор безопасности (SID) пользователя в Windows PowerSell
  3. Как узнать идентификатор безопасности (SID) в редакторе реестра

Как узнать идентификатор безопасности (SID) пользователя в командной строке

Чтобы узнать SID текущего пользователя воспользуемся утилитой whoami, для этого откройте командную строку и выполните следующую команду:

whoami /user

Также узнать SID текущего пользователя можно выполнив следующую команду:

wmic useraccount where name=»%username%» get name,sid

Чтобы узнать все SID присутствующие в операционной системе, выполните команду:

wmic useraccount get name,sid

Чтобы узнать SID определённого пользователя, выполните следующую команду:

wmic useraccount where name=»TestUser1″ get sid

Где TestUser1 — имя пользователя, SID которого нужно узнать.

Чтобы узнать имя пользователя учетной записи по SID (обратная процедура), выполните команду:

wmic useraccount where sid=»S-1-5-21-3210479907-464018182-414762983-1002» get name

Как узнать идентификатор безопасности (SID) пользователя в Windows PowerSell

Также узнать идентификатор безопасности можно используя консоль Windows PowerShell.

Чтобы узнать все идентификаторы безопасности (SID) в консоли Windows PowerShell, выполните команду:

Get-WmiObject Win32_UserAccount | Select Name,SID

Чтобы узнать SID определённого пользователя, выполните следующую команду:

(gwmi win32_useraccount -Filter «name = ‘TestUser1′»).sid

Где TestUser1 — имя пользователя, SID которого нужно узнать.

Также узнать SID определённого пользователя, можно выполнив команду:

Get-WmiObject -Class Win32_UserAccount -Filter «name=’TestUser1′»

Где TestUser1 — имя пользователя, SID которого нужно узнать.

Чтобы узнать имя пользователя учетной записи по SID (обратная процедура), выполните команду следующего вида:

(gwmi win32_useraccount -Filter «sid = ‘SID'»).name

Где вместо SID укажите нужный идентификатор безопасности.

В данном примере команда выглядит так:

(gwmi win32_useraccount -Filter «sid = ‘S-1-5-21-3210479907-464018182-414762983-1002‘»).name

Как узнать идентификатор безопасности (SID) в редакторе реестра

Используя редактор реестра, также можно узнать идентификатор безопасности (SID), для этого откройте редактор реестра нажав сочетание клавиш + R и в открывшемся окне Выполнить введите regedit и нажмите клавишу Enter ↵.

В открывшемся окне редактора реестра, скопируйте/вставьте или перейдите по следующему пути:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

В разделе ProfileList вы увидите всех пользователей и их идентификаторы SID.

Существует множество причин, по которым вам может понадобиться найти идентификатор безопасности (SID) для учетной записи конкретного пользователя в Windows, но в нашем уголке мира общая причина для этого состоит в том, чтобы определить, в каком ключе раздела HKEY_USERS в реестре Windows следует искать пользовательские данные реестра.

Независимо от причины, найти соответствующий SID для имен пользователей действительно легко благодаря wmic-команде – команда доступная из командной строки в большинстве версий Windows.

См. раздел «Как найти SID пользователя в реестре» ниже на странице с инструкциями по сопоставлению имени пользователя с SID с помощью информации в реестре Windows, альтернативного метода использования WMIC.

WMIC команда не существовала до Windows XP, так что вы должны использовать метод реестра в старых версиях Windows.

Сопоставление имён пользователей Windows и SID реестра

Выполните следующие простые шаги, чтобы отобразить таблицу имён пользователей и их соответствующие идентификаторы безопасности:

Как найти SID пользователя с WMIC

Вероятно, потребуется всего лишь минута, а может быть и меньше, чтобы найти SID пользователя в Windows через WMIC:

  1. Откройте командную строку.

    В Windows 10 и Windows 8, если вы используете клавиатуру и мышь, самый быстрый способ – через меню Power User, доступное по нажатию комбинации клавиш Win + X.

    Если вы не видите командную строку в меню «Power User», введите cmd в строку поиска меню «Пуск» и нажмите «Командная строка», когда увидите её.

    Вам не нужно открывать командную строку с повышенными правами, чтобы это работало. Для некоторых команд Windows это требуется, но в приведенном ниже примере команды WMIC вы можете открыть обычную неадминистративную командную строку.

  2. Введите в командной строке следующую команду в точности так, как показано здесь, включая пробелы или их отсутствие:

    wmic useraccount get name,sid

    … и затем нажмите Enter.

    Запрос имени пользователя и SID

    Если вы знаете имя пользователя и хотите получить только SID этого пользователя, введите эту команду, но замените USER именем пользователя (оставьте кавычки):

    wmic useraccount where name="USER" get sid

    Если вы получаете сообщение об ошибке, что команда wmic не распознается, измените рабочий каталог на C:WindowsSystem32wbem и повторите попытку. Вы можете сделать это с помощью команды cd (изменить каталог).

  3. Вы должны увидеть таблицу, отображаемую в командной строке. Это список всех учетных записей пользователя в Windows, с указанием имени пользователя и соответствующего SID учетной записи.

Теперь, когда вы уверены, что определенное имя пользователя соответствует определенному SID, вы можете вносить в реестр любые изменения, которые вам нужны, или делать то, для чего вам нужна эта информация.

Если у вас есть случай, когда вам нужно найти имя пользователя, но всё, что у вас есть, – это идентификатор безопасности, вы можете «отменить» команду следующим образом (просто замените этот SID на соответствующий):

wmic useraccount where sid="S-1-5-21-992878714-4041223874-2616370337-1001" get name

Вы также можете определить SID пользователя, просматривая значения ProfileImagePath в каждом S-1-5-21 с префиксом SID, перечисленных под этим ключом:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

В значении ProfileImagePath в каждом ключе реестра с именем SID указывается каталог профиля, в который входит имя пользователя.

Пример поиска идентификатора безопасности в реестре Windows 10

Этот метод сопоставления пользователей с SID покажет только тех пользователей, которые вошли в систему или вошли в систему и переключились на другого пользователя. Чтобы продолжить использовать метод реестра для определения идентификаторов безопасности других пользователей, вам необходимо войти в систему под учетной записью каждого пользователя в системе и повторить эти шаги. Это большой недостаток; предполагая, что вам это доступно, гораздо лучше использовать метод команды wmic.

В среде Windows каждому доменному и локальному пользователю, группе и другим объектам безопасности, присваивается уникальный идентификатор — Security Identifier или SID.  Именно SID, а не имя пользователя используется для контроля доступа к различным ресурсам: сетевым каталогам, ключам реестра, объектам файловой системы и т.д. В этой статье мы покажем несколько простых способов узнать SID пользователя и обратной процедуры – определения имени пользователя Windows по его SID.

Для преобразования username в SID можно воспользоваться отличий утилитой из комплекта Sysinternals — PsGetSid. Но ее придется выкачивать и устанавливать на каждую систему вручную.

Гораздо проще воспользоваться утилитой командной строки или скриптом Powershell

Получить SID локального пользователя

Чтобы получить SID локальной учетной записи на данной машине, можно воспользоваться утилитой wmic, обращающейся к WMI хранилищу. Для локального пользователя test_user команда будет такой:

wmic useraccount where name='test_user' get sid

Узнать SID пользователя через WMIВ этом примере SID  пользователя — S-1-5-21-1175651296-1316126944-203051354-1005

Если нужно узнать SID текущего пользователя, выполните такую команду:

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

На PowerShell скрипт, выдающий тот же результат можно реализовать с помощью двух классов SecurityIdentifier и NTAccount.

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

Получить SID доменного пользователя

Узнать SID текущей доменной учетной записи можно командой:

whoami /user

whoami user getsidДля получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell.

Get-ADUser -Identity 'jjsmith' | select SID

get-aduser select sidЕсли модуль AD для PowerShell отсутствует, через Powershell можно запросить данные из домена так:

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

PowerShell - get SID via SecurityIdentifier and NTAccountЭта же команда в одну строку:

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

Определить имя пользователя по SID

Чтобы узнать имени учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:

wmic useraccount where sid='S-1-3-12-12452343106-3544442455-30354867-1434' get name

На PowerShell при помощи модуля AD для Powershell:

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

Или так:

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

Источник

(Всего просмотров: 10 418, просмотров сегодня: 1)

SID или идентификатор безопасности – это уникальный код, который помогает идентифицировать учетные записи любого пользователя, группы и компьютера в операционных системах Windows. Они создаются, как только учетная запись пользователя создается и является уникальным идентификатором. На одном компьютере никогда не бывает двух идентификаторов безопасности. Он также называется идентификатором безопасности . Эта уникальная идентификация используется внутри операционной системы вместо отображаемых имен, таких как Личное, Папа или что-то еще. Это также означает, что даже если вы измените свое отображаемое имя, это не повлияет на что-либо, предварительно настроенное для этой учетной записи, поскольку каждая конфигурация привязана к SID, который остается постоянным даже при изменении вашего отображаемого имени или даже имени пользователя.

SID имеют решающее значение для систем, потому что все учетные записи пользователей связаны с неизменяемой буквенно-цифровой символьной строкой. Любые изменения в имени пользователя не влияют на доступ пользователей к системным ресурсам, и в случае, если вы удаляете имя пользователя, а позже кто-то пытается создать учетную запись с вашим старым именем пользователя, невозможно восстановить доступ к ресурсам, так как идентификаторы безопасности всегда уникален для каждого имени пользователя, и в этом случае это не то же самое.

Теперь давайте посмотрим, как найти идентификатор безопасности (SID) любого пользователя в Windows 10.

Содержание

  1. Найти идентификатор безопасности (SID) любого пользователя в Windows 10
  2. 1] Использование WMIC
  3. Фильтрация SID для желаемого пользователя
  4. 2] Использование Whoami
  5. Найти SID текущего пользователя с помощью командной строки или PowerShell
  6. Найти SID всех пользователей с помощью командной строки или PowerShell
  7. Найти SID конкретного пользователя с помощью CommandPrompt или PowerShell
  8. Найти имя пользователя SID с помощью командной строки или PowerShell
  9. 3] Используйте PowerShell
  10. 4] Использование редактора реестра
  11. Идентификация SID

Найти идентификатор безопасности (SID) любого пользователя в Windows 10

1] Использование WMIC

Найти SID или идентификатор безопасности пользователя очень просто. Для этого мы должны использовать командную строку инструментария управления Windows (WMIC).

Итак, прежде всего, начните с открытия командной строки. Вы можете сделать это, выполнив поиск Командная строка в окне поиска Cortana. Или, если вы используете Windows 8 или новее, нажмите комбинацию кнопок WINKEY + X , чтобы открыть контекстное меню кнопки «Пуск», и нажмите Командная строка (администратор).

Теперь введите следующую команду:

 wmic useraccount get name, sid 

Затем нажмите клавишу Ввод .

Теперь вы получите результаты, как показано на скриншоте ниже. Вы получите учетную запись пользователя с идентификатором безопасности.

Фильтрация SID для желаемого пользователя

Читатели, которые раньше использовали SQL-запросы, могут относиться к этому. Но эта команда помогает пользователю получить SID конкретного пользователя и игнорировать все хлопоты. Это наиболее полезно, когда большая система (например, сервер) входит в систему и используется одновременно несколькими пользователями, эта команда сэкономит много вашего времени. Но будет работать только если вы знаете имя пользователя пользователя.

Теперь команда, которую вы собираетесь использовать,

 wmic useraccount где name = "USER" получить sid 

Теперь вам нужно заменить USER фактическим именем пользователя в кавычках в приведенной выше команде.

Например, это должно быть как

 wmic useraccount где name = "Ayush" получить sid 

В случае, если вы получаете ошибку при использовании команды выше, попробуйте изменить путь на C: Windows | System32 | wbem вместо C: Windows System32

Результат приведенной выше команды будет выглядеть примерно так:

2] Использование Whoami

Найти SID текущего пользователя с помощью командной строки или PowerShell

Откройте окно PowerShell/CMD и введите следующую команду:

 Whoami/пользователь 

Нажмите Ввод.

Другой способ найти SID текущего пользователя – использовать команду wmic useraccount , как показано ниже

Откройте окно PowerShell/CMD и введите следующую команду:

 wmic useraccount где name = '% username%' получить домен, имя, sid 

Нажмите Ввод.

Найти SID всех пользователей с помощью командной строки или PowerShell

Откройте окно командной строки/PowerShell и введите следующую команду:

 wmic useraccount получить домен, имя, sid 

Нажмите Ввод.

Найти SID конкретного пользователя с помощью CommandPrompt или PowerShell

Откройте командную строку/PowerShell и введите следующую команду:

 wmic useraccount где name = 'username' получить sid 

Укажите фактическое имя пользователя вместо имени пользователя в приведенной выше команде.

Нажмите Ввод.

Найти имя пользователя SID с помощью командной строки или PowerShell

Откройте командную строку/PowerShell и введите следующую команду

 wmic useraccount где sid = '' получить домен, имя 

Укажите фактическое значение SID вместо вышеуказанной команды.

Нажмите Ввод.

3] Используйте PowerShell

Другой способ найти SID для всех пользователей – использовать команду Get-WmiObject в PowerShell.

Откройте PowerShell и введите следующую команду:

 Get-WmiObject win32_useraccount | Выберите домен, имя, sid 

Нажмите Ввод.

4] Использование редактора реестра

Здесь начнем с открытия редактора реестра. Вы можете сделать это, выполнив поиск в окне поиска Cortana, или просто нажмите комбинацию WINKEY + R , чтобы запустить запуск, введите regedit и нажмите Enter.

Открыв редактор реестра, перейдите по следующему пути:

HKEY_LOCAL_MACHINE ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Microsoft Windows NT CurrentVersion ProfileList

Теперь внутри значений ProfileImagePath для каждого идентификатора безопасности в папке ProfileList вы можете найти нужные идентификаторы безопасности и другие сведения, например имена пользователей. Страница будет выглядеть аналогично приведенному ниже фрагменту экрана.

Стоит отметить, что вы можете найти SID для пользователей, которые уже вошли в систему на компьютере. Либо они должны иметь удаленный доступ к своей учетной записи, либо их учетная запись должна быть авторизована, а затем переключена на другого пользователя, под учетной записью которого выполняется эта деятельность. Это единственный недостаток этого метода, но метод 1 использования WMIC, это не проблема вообще.

Идентификация SID

SID в формате S-1-0-0 называется пустым SID. Он присваивается идентификатору безопасности, когда его значение неизвестно, или он присваивается группе без каких-либо участников.

Кроме того, SID в формате S -1-1-0 является идентификатором мира. Он назначается группе каждого пользователя.

Наконец, SID в формате S-1-2-0 называется локальным SID. Он назначается пользователю, который должен войти в систему с локального терминала.

Вы можете узнать больше об этих идентификаторах системы здесь в Microsoft Developer Network.

При участии Павитры Бхат

Понравилась статья? Поделить с друзьями:
  • Как узнать ram своего компьютера windows 10
  • Как узнать mac адрес bluetooth устройства windows 10
  • Как удалить яндекс браузер с компьютера windows 10 полностью вручную
  • Как узнать ram память на компьютере windows 10
  • Как удалить яндекс браузер по умолчанию на компьютере windows