Работа с sid windows

SID пользователя в Windows: Что это такое и как его узнать

Вы наверняка пытались управлять разрешениями определенных файлов, папок или часто просматриваете реестр 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, — это воспользоваться командной строкой. Откройте командную строку и введите ниже команды, которые соответствуют вашим требованиям.

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

Работа с sid windows

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами установили домен Active Directory на Windows Server 2019. Одним из краеугольных понятий в AD является идентификатор безопасности компьютера SID, о нем и пойдет речь. Мы разберем, какие они бывают у сервера и рабочей станции, а так же научимся определять SID компьютера, буквально за минуту.

Сколько у компьютера SID-ов?

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

Существует два типа SID у компьютера:

  • Первый тип, это когда рабочая станция или сервер не являются членом домена Active Directory
  • Второй тип, это когда компьютер входит в домен Active Directory

В обоих случаях у вас будет два абсолютно разных SID. Первый дескриптор безопасности у вас генерируется при установке системы, второй если вы вводите его в домен AD. И так, у меня есть тестовый домен root.pyatilistnik.org. Есть клиентская станция с Windows 10 1803. Для того, чтобы вам показать разницу и оба SID идентификатора на моей тестовой Windows 10, мы воспользуемся утилитой Марка Русиновича PsGetSid из инструментария Sysinternals (Скачать PsGetSid можно по ссылке https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid). Распаковываете архив с утилитой, открываете командную строку от имени администратора и переходите с помощью cd в каталог с утилитой PsGetSid.

Читайте также:  Асп печать windows 10

Первым делом я выведу имя компьютера, через команду hostname. В моем примере, это W10-CL01.

Далее я выведу локальный SID компьютера, через утилиту PsGetSid:

В итоге я получил SID for W10-CL01\w10-cl01:S-1-5-21-7706586-876249769-275126362. Обратите внимание, что перед идентификатором безопасности идет имя компьютера, это сразу говорит, что он локальный.

И команда указанная выше, показывает вам доменный SID рабочей станции. SID for ROOT\w10-cl01$:S-1-5-21-233550040-578987154-4094747311-1602. Обратите внимание, что перед идентификаторам идет имя домена ROOT\.

Нюансы идентификаторов безопасности на рабочих станциях

Некоторое время назад, Марк Руссинович, очень известный человек в мире Microsoft, написал замечательную статью, про мифы дублирования SID, где показал на практике свои мысли, но после прочтения статьи у некоторых людей оставалась в голове путаница или вопросы, \ бы хотел немного уточнить по статье (Ссылка на нее https://blogs.technet.microsoft.com/mark_russinovich/2009/11/15/sid/).

Предположим, что вы клонируете нужную вам виртуальную машину или хост. Если вы не обезличиваете систему, с помощью Sysprep, то у вас все полученные клоны систем, будут иметь один локальный SID компьютера. Если мы говорим про окружение в виде рабочей группы в локальной сети, то ни каких проблем с доступом или конфликтом с доступом к ресурсам вы не увидите. Но вот в случае с доменным SID, такое не получится, он должен быть уникальным в пределах Active Directory, в противном случае, у вас будут конфликты между двумя объектами. Убедитесь, что после клонирования и обезличивания у вас разные SID, полученные от мастера RID.

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

Методы определения сида компьютера

  • Первый метод я вам уже показал. он заключается в использовании утилиты PsGetSid
  • Второй метод, это использование командной строки, с помощью утилиты dsquery. Получать мы таким методом будем доменный SID у сервера или рабочей станции:

dsquery computer — name «Имя компьютер» | dsget computer — SID

Хочу отметить, что данную команду вы должны выполнять либо на контроллере домена или же на рабочей станции, где установлены консоли администрирования и утилиты из пакета RSAT.

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

  • Куда же без PowerShell в нем можно делать, что угодно. Вот пример кода дающего локальный идентификатор безопасности у рабочей станции:
Читайте также:  Пропадает кнопка переключения языка windows 10

тут так же будет запрошен SID учетной записи «Администратор». Если компьютер доменный, то нам поможет командлет Get-ADComputer. Запускаем оснастку PowerShell и вводим команду:

Get-ADComputer W10-CL01 -prop sid

Как видите методов очень много. Видел я метод и получения сида из реестра Windows, в ветке

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

Существует множество причин, по которым вам может понадобиться найти идентификатор безопасности (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 вы можете открыть обычную неадминистративную командную строку.

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

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

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

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

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

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

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

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

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

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

Читайте также:  Как отключить автоматическое выключение монитора windows 10

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

Как изменить SID на Windows 7, Windows Server 2008 R2 и Windows Server 2012 R2

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

Рассмотрим на примере получения нового SID на Windows Server 2012 R2. Посмотреть текущий SID можно с помощью утилиты psgetsid (скачать можно с оф.сайта или тут), у меня имеются две системы с одинаковыми SID:

В системе на которой нужно сменить SID, нажимаем Alt+R и вбиваем sysprep. Жмем ОК.

Откроется папка расположения утилиты sysprep. Запускаем файл sysprep.exe. В открывшемся окне, в пункте System Cleaup Action, выбираем Enter System Out-of-box Experience (OOBE) и отмечаем галочкой пункт Generalize (для того чтобы с генерировать новый SID идентификатор). В пункте Shutdown Options выбираем Reboot. Нажимаем ОК.

Запустится процедура очистки системы и так же в процессе будет присвоен новый SID.

После перезагрузки системы, мы увидим предложение задать первоначальные параметры системы и пароль администратора.

Вот таким нехитрым и быстрым способом можно легко сменить в системе идентификатор SID.

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

В процессе работы с учётными записями пользователям Windows гораздо удобнее иметь дело с осмысленными именами, компьютеры же, привыкшие «мыслить» на языке цифр вместо имён учётных записей оперируют их SID — уникальными идентификаторами безопасности. В Windows SID могут иметь не только пользователи, свои идентификаторы присваиваются группам, доменам, различным системным объектам и т.д.

При выполнении некоторых трюков и тонких настроек вам может понадобиться этот самый SID. Покопавшись в системном реестре, его можно извлечь оттуда вручную, но есть и более простой способ. Если у вас на компьютере завалялся пакет Sysinternals Suite, можете воспользоваться входящей в его состав утилитой PsGetSid, она то как раз и нужна, чтобы вытаскивать SID из системы. А можно извлечь SID и безо всяких сторонних средств. Для этого в Windows есть командная строка CMD и консоль PowerShell .

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

Этой же командой можно извлечь SID любого локального пользователя, подставив на место переменной %username% его имя.

Аналогичный результат можно получить с помощью консоли PowerShell , только на этот раз придётся выполнить целых три команды, заменив предварительно USERNAME именем реального пользователя. Вот так:

Точно также просто можно узнать идентификатор безопасности текущего доменного пользователя. В командной строке он извлекается командой whoami /user

А вот как быть, если вам нужно проделать всё наоборот, то есть по имеющемуся SID узнать имя пользователя? И тут всё очень просто. Для этого в запущенной с повышенными привилегиями командной строке выполняем команду wmic useraccount where sid=’S-XXXXXXXXX’ get name , где S-XXXXXXXXX — известный вам идентификатор.

Оцените статью