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-2824591131—1103.
В данном примере:
- 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
Команда может вернуть ошибку, если репозиторий 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
По аналогии можно получить 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
Получить 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
Вы можете получить SID группы AD с помощью командлета Get-ADGroup:
Get-ADGroup -Filter {Name -like "msk-admin*"} | Select 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 в одну строку:
(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
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}$"
Важно, чтобы у каждого компьютера в домене был уникальный локальный 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
Также можно узнать получить 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
В нашем случае объект AD, который имеет данный SID, является компьютером (objectClass=computer).
Обновлено 10.03.2021
Добрый день уважаемые читатели, сегодня мы продолжим изучение 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 номер субъекта безопасности.
По мимо этого, в любой ос Windows существуют встроенные или BuiltIn группы и учетные записи, например администратор или гость, в каждой ос виндоус они имеют одинаковые SID значения. Посмотреть вы их можете в оснастке Управление компьютером.
Сделаны они для того, что если у вас нет 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
Если вы кликните правым кликом и из контекстного меню выберете Разрешения, то обнаружите, что права доступа есть только у системы, а вот у администраторов локальной станции их нет, но при желании можно их получить, это лишний механизм защиты, так как можно вытащить хэши учетных записей и попытаться их взломать.
SAM это библиотека samsrv.dll, которая работает в Windows в виде процесса lsass.exe, увидеть это можно в диспетчере задач.
1 способ узнать sid пользователя, команда WMIC
Для примера я все буду показывать на своей рабочей станции с установленной в ней Windows Server 2012 R2, станция принадлежит домену Active Directory. Первый метод, это использование старого, доброго WMIC инструментария (Windows Management Instrumentation). Все, что вам нужно, это знать имя пользователя, точнее его логин. Чтобы посмотреть список локальных пользователей введите команду
На выходе вы получите список локальных пользователей.
Чтобы выяснить все логины доменных пользователей вводим команду
Net user «пользователи домена» /domain
Я вам это уже рассказывал в заметке Как узнать имена учетных записей Администраторов домена. На выходе получите, что то такое
Далее зная логин все просто вводим
wmic useraccount where name=»admdc» get sid
Как видите все работает.
Можно наоборот по 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 useraccount where (sid=»S-1-5-21-613421863-3366779934-4260147692-500″ and domain=»aetp») get name
2 способ узнать sid пользователя, команда Whoami
Тоже довольно старенькая команда из cmd.exe. Вводим
Получаем полный сид текущего залогиненного пользователя.
Если ввести Whoami /logonid, то можно получить logonid, выглядит он вот так S-1-5-5-0-595920
Если ввести ключ /all, то вы увидите, все sid локальных (bultin) групп и пользователей
Так же вы увидите сведения о привилегиях.
На мой взгляд, данный метод, немного проще первого, так как требует ввода меньшего количества ключей.
3 способ узнать sid пользователя, ADUC и ADSIedit
В третьем способе мы воспользуемся средствами графического интерфейса, а точнее самой оснастке Active Directory пользователи и компьютеры. В ней есть встроенный механизм называется редактор атрибутов Active Directory. Открываем вкладку Вид и ставим галку Дополнительные параметры, да забыл отметить нужно быть членом группы Администраторы схемы.
После чего заходим в свойства учетной записи, вкладка Редактор атрибутов и находим там поле objectSid.
Так же SID можно посмотреть и во встроенной оснастке ADSIedit, подключаетесь там к контексту именования имен и заходите в свойства нужной учетной записи.
Да чуть не забыл в Windows Server 2012 R2 есть такое средство как Центр администрирования Active Directory, ищите там нужную учетную запись и в ней находите пункт SID.
4 способ узнать sid пользователя, утилита PsGetSid
Есть такая замечательная утилита от Microsoft од названием PsGetSid.
Скачать PsGetSid можно по ссылке https://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
Когда вы скачаете и разархивируете файл, вы получите папку с большим набором утилит, среди них будет PsGetSid.
смысл у данной утилиты очень простой, она входит в состав Sysinternals и умеет получать SID пользователя по его имени и наоборот, умеет получать как локальных пользователей, так и доменных.
Вводим команду psgetsid имя компьютералогин учетки
psgetsid adm999admdc
и наоборот, выясним имя по SID:
psgetsid S-1-5-21-613421863-3366779934-4260147692-1312
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
Для локального пользователя команда будет такой.
$objUser = New-Object System.Security.Principal.NTAccount(«логин»)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
Обратная ситуация получаем по 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 пользователя
Все описанные выше методы хороши, когда вам нужно найти 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 файл.
На этом у меня все с вами был Иван Семин, автор и создатель 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, — это воспользоваться командной строкой. Откройте командную строку и введите ниже команды, которые соответствуют вашим требованиям.
- Имя SID используемое в настоящее время: введите команду
whoami /user
и нажмите Enter. - Имя SID определенного пользователя: введите в командую строку
wmic useraccount where name="хомячок" get name,sid
. Где «хомячок» — это фактическое имя пользователя. - Все SID пользователей в Windows: введите
wmic useraccount get name,sid
.
Узнать идентификатор SID пользователя в Windows через реестр
- Нажмите Win + R и введите в диалоговое окно regedit, затем нажмите Enter.
- В реестре скопируйте/вставьте или перейдите по пути
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
. - Ниже значения ProfileList, Вы увидите всех пользователей и их идентификаторы 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
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
Дополнительно в WMI-запросе можно указать имя компьютера (для локального) или домена (для доменного пользователя). Например эта команда выведет SID локального администратора:
wmic useraccount where (name=′administrator′ and domain=′%computername%′) get sid
а эта — доменного:
wmic useraccount where (name=′administrator′ and domain=′contoso′) get sid
Для обычного пользователя все также, узнаем 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
Примечание. В запросе вместо имени компьютерадомена можно использовать переменные %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) нам потребуется использовать свойство SID класса win32_SID. Например:
[wmi]″win32_SID.SID=′S-1-5-21-4178654016-3479515840-607560339-1002′″).AccountName
Как вариант, для работы с WMI можно использовать командлет Get-WmiObject (или Get-CimInstance). Например так мы узнаем SID пользователя:
(Get-WmiObject -Class win32_userAccount -Filter ″name=′Kirill′ and domain=′Contoso′″).SID
а так его имя:
(Get-WmiObject -Class win32_userAccount -Filter ″SID=′S-1-5-21-2404695905-416858507-746700462-1001′″).Name
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 делаем наоборот — сначала создаем объект класса 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
PsGetSid
Как видите, встроенных средств для выяснения SID в Windows предостаточно, но для полноты картины возьмем еще одно, от стороннего разработчика.
PsGetSid — утилита командной строки от Sysinternals, входящая в состав пакета PsTools. PsGetSid умеет получать SID пользователя по его имени и наоборот, работает как с локальными, так и с доменными аккаунтами. Утилита не требует установки, ее достаточно скопировать на нужный компьютер и запустить.
Для примера запросим SID пользователя по его имени:
psgetsid wks10Kirill
и наоборот, выясним имя по SID:
psgetsid S-1-5-21-438167859-634674341-1098546566-1001
В данной статье рассмотрено несколько способов, с помощью которых можно узнать идентификатор безопасности (SID) пользователя в операционной системе Windows 10.
SID (Security Identifier) — идентификатор безопасности, это уникальный идентификатор (код) который присваивается любой создаваемой доменной или локальной учетным записям, а также группе и другим объектам безопасности.
Операционная система использует именно идентификаторы безопасности (SID) для контроля доступа к различным ресурсам, таким как объекты файловой системы, ключам реестра, сетевым каталогам, что означает, что даже если вы измените имя пользователя, то это не повлияет на какие-либо предварительные настройки для этой учетной записи, поскольку каждая конфигурация привязана к SID, который остается постоянным.
Идентификатор безопасности может быть полезен во время выполнения определенных команд, связанных с безопасностью компьютера.
Содержание
- Как узнать идентификатор безопасности (SID) пользователя в командной строке
- Как узнать идентификатор безопасности (SID) пользователя в Windows PowerSell
- Как узнать идентификатор безопасности (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.
Выполните следующие простые шаги, чтобы отобразить таблицу имён пользователей и их соответствующие идентификаторы безопасности:
Как найти SID пользователя с WMIC
Вероятно, потребуется всего лишь минута, а может быть и меньше, чтобы найти SID пользователя в Windows через WMIC:
-
Откройте командную строку.
В Windows 10 и Windows 8, если вы используете клавиатуру и мышь, самый быстрый способ – через меню Power User, доступное по нажатию комбинации клавиш Win + X.
Если вы не видите командную строку в меню «Power User», введите cmd в строку поиска меню «Пуск» и нажмите «Командная строка», когда увидите её.
Вам не нужно открывать командную строку с повышенными правами, чтобы это работало. Для некоторых команд Windows это требуется, но в приведенном ниже примере команды WMIC вы можете открыть обычную неадминистративную командную строку.
-
Введите в командной строке следующую команду в точности так, как показано здесь, включая пробелы или их отсутствие:
wmic useraccount get name,sid
… и затем нажмите Enter.
Если вы знаете имя пользователя и хотите получить только SID этого пользователя, введите эту команду, но замените USER именем пользователя (оставьте кавычки):
wmic useraccount where name="USER" get sid
Если вы получаете сообщение об ошибке, что команда wmic не распознается, измените рабочий каталог на C:WindowsSystem32wbem и повторите попытку. Вы можете сделать это с помощью команды cd (изменить каталог).
-
Вы должны увидеть таблицу, отображаемую в командной строке. Это список всех учетных записей пользователя в 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 указывается каталог профиля, в который входит имя пользователя.
Этот метод сопоставления пользователей с 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 пользователя — 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
Для получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell.
Get-ADUser -Identity 'jjsmith' | 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
Эта же команда в одну строку:
(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.
Содержание
- Найти идентификатор безопасности (SID) любого пользователя в Windows 10
- 1] Использование WMIC
- Фильтрация SID для желаемого пользователя
- 2] Использование Whoami
- Найти SID текущего пользователя с помощью командной строки или PowerShell
- Найти SID всех пользователей с помощью командной строки или PowerShell
- Найти SID конкретного пользователя с помощью CommandPrompt или PowerShell
- Найти имя пользователя SID с помощью командной строки или PowerShell
- 3] Используйте PowerShell
- 4] Использование редактора реестра
- Идентификация 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.
При участии Павитры Бхат