Как посмотреть uuid windows

The object GUID is a globally unique identifier assigned by Microsoft Active Directory Domain Services when the object instance is created. The object GUID is contained in the objectGUID attribute of the object. A GUID is a 128-bit number guaranteed to be unique in space and time. Object GUID never changes, so if an object is renamed or moved anywhere in the enterprise forest, the object GUID remains the same. Applications that save references to objects in Active Directory Domain Services must use the object GUID to ensure that the object reference will survive a rename of the object. The distinguished name for an object might change, but the object GUID will not.

There are many ways to check an object’s GUID. For example, use the GUI tool like ldp.exe. Or use a powershell script as showed below:

PS C:\Users\TESTJLI> Get-ADuser -Identity jli_test|Select-Object ObjectGUID

ObjectGUID
----------
6f91b499-3500-460f-b0c3-ebec52d16003

If you are trying to use ldapsearch on a Linux box, it’s not that easy then because objectGUID returned by ldapsearch will be base64 encoded.

[joe@testjli ~]# ldapsearch -x -H ldaps://joe.ldap.local -b "DC=JOE,DC=LDAP,DC=LOCAL" -s subtree -D "CN=JOELDAP,DC=JOE,DC=LDAP,DC=LOCAL" -w "TESTJLI" "(cn=JOETEST*)" "objectGUID"|grep "objectGUID::"

objectGUID:: 3E8jAoOk/kqO7Nqbme0qnQ==

In the output above, you can see objectGUID is followed by “::”. According to the LDIF standard, the value data that do not fit within a portable subset of ASCII characters are marked with ‘::’ after the attribute name and encoded into ASCII using base64 encoding.

On some version of Linux, you need to specify “-L” to tell ldapsearch to display the search results in LDIF format so that you can see the string. Or you will get “NOT ASCII” for that attribute.

[joe@testjli ~]# ldapsearch -x -H ldaps://joe.ldap.local -b "DC=JOE,DC=LDAP,DC=LOCAL" -s subtree -D "CN=JOELDAP,DC=JOE,DC=LDAP,DC=LOCAL" -w "TESTJLI" "(cn=JOETEST*)" "objectGUID"|grep "objectGUID::"

objectGUID=NOT ASCII

To get the actual objectGUID value you see on a Windows system, you need to decode this base64 string and use “hexdump” to format it with a fprintf-style format string — see fprintf(3).

[joe@testjli ~]# ldapsearch -x -H ldaps://joe.ldap.local -b "DC=JOE,DC=LDAP,DC=LOCAL" -s subtree -D "CN=JOELDAP,DC=JOE,DC=LDAP,DC=LOCAL" -w "TESTJLI" "(cn=JOETEST*)" "objectGUID"|grep "objectGUID::"|awk '{print $2}'|base64 -d -i|hexdump

0000000 b499 6f91 3500 460f c3b0 eceb d152 0360

Without any format, the output of hexdump “b499 6f91 3500 460f c3b0 eceb d152 0360” is 128 bit which means every 2 digits is a byte. Here we can use a format string ‘1/1 ” %02x”‘ to split each byte with a white space (there is a white space between the first double quote ” and % sign) . “1/1” means “iteration count/byte count”. So hexdump handles the input with the format — zero padded to field width 2 as hexadecimal notation until all input data is processed.

[joe@testjli ~]# ldapsearch -x -H ldaps://joe.ldap.local -b "DC=JOE,DC=LDAP,DC=LOCAL" -s subtree -D "CN=JOELDAP,DC=JOE,DC=LDAP,DC=LOCAL" -w "TESTJLI" "(cn=JOETEST*)" "objectGUID"|grep "objectGUID::"|awk '{print $2}'|base64 -d -i|hexdump -e  '1/1 " %02x"'

 99 b4 91 6f 00 35 0f 46 b0 c3 eb ec 52 d1 60 03

Now the rest thing is to assemble it with the correct order:

[joe@testjli ~]# G=($(ldapsearch -x -H ldaps://joe.ldap.local -b "DC=JOE,DC=LDAP,DC=LOCAL" -s subtree -D "CN=JOELDAP,DC=JOE,DC=LDAP,DC=LOCAL" -w "TESTJLI" "(cn=JOETEST*)" "objectGUID"|grep "objectGUID::"|awk '{print $2}'|base64 -d -i|hexdump -e  '1/1 " %02x"'))
[joe@testjli ~]# OBJECTGUID="${G[3]}${G[2]}${G[1]}${G[0]}-${G[5]}${G[4]}-${G[7]}${G[6]}-${G[8]}${G[9]}-${G[10]}${G[11]}${G[12]}${G[13]}${G[14]}${G[15]}"
[joe@testjli ~]# echo $OBJECTGUID
6f91b499-3500-460f-b0c3-ebec52d16003

Or use awk:

[joe@testjli ~]# echo mbSRbwA1D0aww+vsUtFgAw==|base64 -d -i|hexdump -e  '1/1 " %02x"'|awk '{print $4$3$2$1"-"$6$5"-"$8$7"-"$9$10"-"$11$12$13$14$15$16}'
6f91b499-3500-460f-b0c3-ebec52d16003

[joe@testjli ~]# echo mbSRbwA1D0aww+vsUtFgAw==|base64 -d -i|hexdump -e  '1/1 " %02x"'|awk '{print $4$3$2$1"-"$6$5"-"$8$7"-"$9$10"-"$11$12$13$14$15$16}'|awk '{ print toupper($0) }'
6F91B499-3500-460F-B0C3-EBEC52D16003

How do we know the objectGUID should be assembled in this order? Here is the wiki page which explains it. Basically a GUID is stored as a 16-byte (128-bit) number. Microsoft format differs from the UUID standard in the byte order of the first 3 fields. It is split into four fields, defined as follows:

Bits Bytes Name Endianness (Microsoft) Endianness (RFC 4122)
32 4 Data1 Native (Little) Big
16 2 Data2 Native (Little) Big
16 2 Data3 Native (Little) Big
64 8 Data4 Big Big
GUID format

This endianness applies only to the way in which a GUID is stored, and not to the way in which it is represented in text. GUIDs and RFC 4122 UUIDs should be identical when displayed textually.

One thing I’ve noticed during my work is if the returned base64 coded ASCII string is decoded and assigned to a variable, then use hexdump on the variable, a “00” byte in the middle is removed and another byte is appended at the end. This will cause the final result not correct. So don’t split decode and hexdump in two steps.

[joe@testjli ~]# echo mbSRbwA1D0aww+vsUtFgAw==
mbSRbwA1D0aww+vsUtFgAw==

[joe@testjli ~]# guid="mbSRbwA1D0aww+vsUtFgAw=="
[joe@testjli ~]# echo ${guid}
mbSRbwA1D0aww+vsUtFgAw==

[joe@testjli ~]# echo mbSRbwA1D0aww+vsUtFgAw==|base64 -d -i|hexdump -e  '1/1 " %02x"'
 99 b4 91 6f 00 35 0f 46 b0 c3 eb ec 52 d1 60 03

[joe@testjli ~]# echo ${guid}|base64 -d -i|hexdump -e  '1/1 " %02x"'
 99 b4 91 6f 00 35 0f 46 b0 c3 eb ec 52 d1 60 03


[joe@testjli ~]# wrong1=$(echo mbSRbwA1D0aww+vsUtFgAw==|base64 -d -i)
[joe@testjli ~]# wrong2=`echo mbSRbwA1D0aww+vsUtFgAw==|base64 -d -i`

[joe@testjli ~]# echo ${wrong1} |hexdump -e  '1/1 " %02x"'
 99 b4 91 6f 35 0f 46 b0 c3 eb ec 52 d1 60 03 0a
[joe@testjli ~]# echo ${wrong2} |hexdump -e  '1/1 " %02x"'
 99 b4 91 6f 35 0f 46 b0 c3 eb ec 52 d1 60 03 0a

So why bother to use ldapsearch when there other tools on Windows can do the same thing easily? The reason is we have an application which integrates with an AD to authenticate users. I need to check about 20000 users for their objectGUID values stored within the application’s database against the actual values returned from the AD.

I just prefer to work on a Linux platform than using powershell to query a Oracle database using Oracle Data Provider for .NET (ODP.NET). Another option is to use Oracle’s DBMS_LDAP PL/SQL package. I’ll give an example to use DBMS_LDAP in another post.

As always, for each task, there are many ways to accomplish it. When choosing a method over another, you need to think about:

  • complexity
  • efficiency
  • mantainence

For a small one like I just mentioned above, picking one with which you are comfortable.

Every Windows installation has a unique UUID that you can use to distinguish machines. While computer names can change, the UUID won’t:

 
PS> (Get-CimInstance -Class Win32_ComputerSystemProduct).UUID
4C4C4544-004C-4710-8051-C4C04F443732 

Universal Unique Identifier (UUID)

In reality, the UUID is just a GUID (Globally Unique Identifier), which comes in different formats:

$uuid = (Get-CimInstance -Class Win32_ComputerSystemProduct).UUID
[Guid]$guid = $uuid

"d","n","p","b","x" |
  ForEach-Object {
    '$guid.ToString("{0}") = {1}' -f $_, $guid.ToString($_)
  }

Here is the result:

 
$guid.ToString("d")= 4c4c4544-004c-4710-8051-c4c04f443732
$guid.ToString("n")= 4c4c4544004c47108051c4c04f443732
$guid.ToString("p")= (4c4c4544-004c-4710-8051-c4c04f443732)
$guid.ToString("b")= {4c4c4544-004c-4710-8051-c4c04f443732}
$guid.ToString("x")= {0x4c4c4544,0x004c,0x4710,{0x80,0x51,0xc4,0xc0,0x4f,0x44,0x37,0x32}} 

Create a New UUID (or GUID)

If you’d like to create a new UUID (or GUID) to get a unique identifier for whatever you like to tag, i.e. temporary file names, the New-Guid cmdlet was introduced in PowerShell 5:

 
PS> New-Guid

Guid                                
----                                
16750457-9a7e-4510-96ab-f9eef7273f3e 

It basically runs this .NET call behind the scenes:

 
PS> [Guid]::NewGuid()

Guid                                
----                                
6cb3cb1a-b094-425b-8ccb-e74c2034884f 

psconf.eu – PowerShell Conference EU 2019 – June 4-7, Hannover Germany – visit www.psconf.eu There aren’t too many trainings around for experienced PowerShell scripters where you really still learn something new. But there’s one place you don’t want to miss: PowerShell Conference EU – with 40 renown international speakers including PowerShell team members and MVPs, plus 350 professional and creative PowerShell scripters. Registration is open at www.psconf.eu, and the full 3-track 4-days agenda becomes available soon. Once a year it’s just a smart move to come together, update know-how, learn about security and mitigations, and bring home fresh ideas and authoritative guidance. We’d sure love to see and hear from you!

Twitter This Tip!

ReTweet this Tip!

This article covers multiple ways to find Active Directory Schema version and list all the AD schema versions with objectVersion Value.

You can determine the current AD schema version by reviewing the objectVersion property of CN=Schema, CN=Configuration.

To check the AD version of your server, you can use PowerShell, dsquery or ADSI Edit tool. I will cover all the methods, and you use the method that you like.

Install and Update Third Party Applications with Patch My PC

Install and Update Third Party Applications with Patch My PC

The AD Schema version is a description of all directory objects and attributes of the Windows domain. It’s basically like your Windows Registry which stores all the critical information about your computer. When you plan for in-place upgrade of a domain controller running on Windows Server, the Schema version requires an update to the latest version.

In most cases, the objectVersion attribute value is incremented with every new server release. I believe the value is incremented only when there are changes done to the schema.

However, the objectVersion attribute can have the same value for two Windows Server versions. For example, Windows Server 2022 and Windows Server 2019 share the same objectVersion value of 88.

The below table lists all the AD Schema versions with objectVersion Value.

Windows Server AD Version Schema objectVersion Value
Windows Server 2025 90
Windows Server 2022 88
Windows Server 2019 88
Windows Server 2016 87
Windows Server 2012 R2 69
Windows Server 2012 56
Windows Server 2008 R2 47
Windows Server 2008 44
Windows Server 2003 R2 31
Windows Server 2003 30
Windows Server 2000 13
Active Directory Schema Versions

Let’s look at different methods to find Active Directory Schema version. In all the methods listed below, the internal root domain used is: prajwal.local.

Find Active Directory Schema version using DSQuery

Using DSQuery, you can find the AD Schema version with following steps.

  • Launch the command prompt as administrator.
  • Run the command dsquery * "cn=schema,cn=configuration,dc=prajwal,dc=local" -scope base -attr objectVersion.
  • Do not forget to replace the root domain with your current domain.

From the dsquery output, the objectVersion property determines the current AD Schema version which is 88 in this case.

Find Active Directory Schema version using dsquery

Find Active Directory Schema version using dsquery

You can use PowerShell to determine the current AD Schema version.

  • Launch the PowerShell as administrator.
  • Run the following command to get AD Schema version in PowerShell window.
Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion
DistinguishedName : CN=Schema,CN=Configuration,DC=prajwal,DC=local
Name              : Schema
ObjectClass       : dMD
ObjectGUID        : 19dc3234-0b66-4dec-aea7-a26cf54a2843
objectVersion     : 88

From the output, the objectVersion property value determines the current Active Directory schema version which is 88 in this case.

Find AD Schema version using PowerShell

Find AD Schema version using PowerShell

You can use ADSIEdit.msc tool or LDP.exe to determine the current AD schema version. The ADSI Edit utility is used to view and manage objects and attributes in an Active Directory forest.

The same ADSI edit tool is also used while creating system management container for SCCM. To launch the ADSI Edit tool, launch the Server Manager on Windows Server. On the Server Manager window, click Tools and select ADSI Edit.

On the ADSI Edit window, right-click ADSI Edit and select Connect to. On the Connection Settings window, click the drop-down for Select a well-known Naming Context and select Schema. Click OK.

Launch the ADSI Edit Tool

Launch the ADSI Edit Tool

Expand the container that starts with Schema [FQDN_of_your_DC]. Right-click the CN=Schema,CN=Configuration and select Properties. Select the Attribute tab and review the objectVersion attribute value that determines the current Active Directory Schema version.

Compare the value that is shown there against the ones provided in the table above. In this case, the objectVersion value is 88, which corresponds to an AD Schema version of Windows Server 2019 or Windows Server 2022.

Find AD Schema version from ADSIEdit.msc

Find AD Schema version from ADSIEdit.msc

Still Need Help?

If you need further assistance on the above article or want to discuss other technical issues, check out some of these options.

Prajwal Desai

Prajwal Desai is a technology expert and 10 time Dual Microsoft MVP (Most Valuable Professional) with a strong focus on Microsoft Intune, SCCM, Windows 365, Enterprise Mobility, and Windows. He is a renowned author, speaker, & community leader, known for sharing his expertise & knowledge through his blog, YouTube, conferences, webinars etc.

Рубрика:

Безопасность / 
Безопасность

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

Иван Коробко

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

Для многих идентификатор безопасности – это темный лес. На самом деле все гораздо проще. Эта статья поможет превратить его в прекрасную цветущую поляну.

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

В Windows широко используется несколько видов различных идентификаторов безопасности: GUID, SID, UUID (CLSID).

Виды идентификаторов безопасности

  • GUID (Globally Unique Identifier) – представляет собой уникальный 128-битный идентификатор. Его главная особенность – уникальность. Общее количество уникальных ключей настолько велико (2128 или 3,4028×1038), что вероятность генерации двух совпадающих ключей ничтожно мала. GUID – это частная реализация (компанией Microsoft) стандарта, имеющего название Universally Unique Identifier (UUID).
  • SID (Security Identifier) – уникальная бинарная структура данных переменной длины, однозначно идентифицирующая объект: учетную запись пользователя, группы, домена, компьютера и т. д.
  • UUID (Universally Unique Identifier) – это стандарт идентификации, используемый в создании программного обеспечения, стандартизированный Фондом свободного программного обеспечения (FSF). UUID описан в RFC1422 «A Universally Unique IDentifier (UUID) URN Namespace».

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

Идентификатор безопасности GUID

GUID нашел широкое применение в Active Directory. Совместно с другим идентификатором безопасности, о котором речь пойдет позже (SID), он однозначно определяет объект.

При создании новой учетной записи пользователя или группы в Active Directory новому объекту присваивается уникальный в глобальном масштабе идентификатор (GUID) не только в домене, но и во всем мире. Кроме объектов-пользователей и объектов-групп, GUID есть у всех объектов, создающихся в Active Directory. Значение GUID хранится в бинарном виде в параметре ObjectGUID (см. рис. 1).

Рисунок 1. GUID в Active Directory

Рисунок 1. GUID в Active Directory

Структура GUID

GUID – это 16-байтный (128-битный) идентификатор, описанный в стандарте «A Universally Unique IDentifier (UUID) URN Namespace» (RFC 1422). Условно идентификатор разбивают на 4 части (см. таблицу 1), а при записи в тестовом виде последнюю часть разбивают дополнительно еще на две. Это делается для упрощения определения типа идентификатора: первый байт последнего, 64-битного раздела (в текстовом виде это как раз 4 символа) определяет тип GUID (см. таблицу 2). В текстовом виде GUID записывается следующим образом: d50b151a-02c0-4dd0-a59e-f1fb61614d6b.

Таблица 1. Структура GUID

Бит

Байт

Часть

Количество символов в блоке

32

4

1

8

16

2

2

4

16

2

3

4

64

8

4

4

12

 Таблица 2. Расшифровка значения первого байта последнего блока GUID

Значение

Описание

0

NCS Совместимость с Networking Computing System

10

Стандарт

110

Microsoft COM. Сюда также относится очень важный GUID – unknown-устройства

111

Зарезервировано

Определение типа GUID

В настоящее время существует 5 версий GUID (см. таблицу 3). Номер версии GUID – первое число третьей части GUID: c9802770-e0af-11dc-95ff-0016368d1a02. Как видно из таблицы 3 – этот GUID сгенерирован на основе временного штампа. Зная тип идентификатора, легко определить, является ли он стандартным или сгенерирован каким-либо программным обеспечением.

Таблица 3. Версии GUID

Версия

Описание

1

GUID созданный на основе временного штампа (time based GUID)

2

DCE Security version (with POSIX UIDs)

3

GUID основанный на имени (MD5 hash)

4

Произвольный GUID

5

GUID основанный на имени(SHA-1 hash)

Подводя итог, перечислим особенности глобального идентификатора (GUID):

  • генерируемое значение GUID уникально во всем мире;
  • идентификатор не изменяется на протяжении всего времени существования объекта.

Генерация GUID

Для генерации GUID можно воспользоваться либо одним из on-line-генераторов в Сети, либо встроенной в Windows стандартной библиотекой с помощью сценариев (см. листинг 1).

Листинг 1. Генерация GUID (V-Script)

Set TypeLib = CreateObject(«Scriptlet.TypeLib»)

wscript.Echo TypeLib.Guid

Set TypeLib = Nothing

Идентификатор безопасности SID

Этот идентификатор широко известен не только опытным системным администраторам и специалистам системной поддержки, но и обычным пользователям, настраивающим доступ к папке между двумя компьютерами. Открыв вкладку «Безопасность» свойств обычной папки (см. рис. 2), пользователь видит объекты: группы и пользователи, которым назначен индивидуальный набор прав. На самом деле там указаны SID, а для упрощения восприятия отображаются понятные всем имена объектов. SID имеет сложную структуру, которая будет рассмотрена позже.

Рисунок 2. Параметры безопасности объекта

SID присваивается пользователю при создании учетной записи пользователя или группы в Active Directory. Значение SID в бинарном виде хранится в параметре ObjectSID.

Особенности SID

Идентификатор имеет несколько очень важных особенностей:

  • Каждый объект (группа безопасности или пользователь) имеет персональный идентификатор.
  • Изменить SID объекта в пределах одного домена невозможно. При переходе в другой домен пользователь получает дополнительный SID.
  • Идентификаторы удаленных объектов никогда более не используются.
  • SID в учетных записях домена или Windows одни и те же, вне зависимости от версии продукта (см. таблицу 6).
  • Если контроллер домена по какой-либо причине недоступен, то имя объекта не подставляется и отображается его SID. Второй причиной, по которой может отображаться, – некорректное удаление объекта.

При взаимодействии между объектами в Active Directory и Windows идентификация объектов осуществляется с помощью SID.

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

Таким образом, если созданная доменная учетная запись пользователя User1 переименована в User2, то с точки зрения Active Directory у объекта изменено только свойство, поскольку SID остался неизменным.

Если же пользователь был удален, а затем создан заново с тем же именем, то с точки зрения Active Directory появился новый объект. Старый безвозвратно удален.

Если же учетная запись была удалена, а затем восстановлена из резервной копии Active Directory, то SID учетной записи пользователя после восстановления будет прежним

Структура SID

SID состоит из нескольких частей (см. рис. 3).

Рисунок 3. Структура SID

Рисунок 3. Структура SID

Выражение SID можно записать формулой:

S-R-X-Y1-Y2-…-Yn-1-Yn (1)

 Каждая из букв несет в себе смысловую нагрузку:

  • S – идентифицирует SID. Идентификатор всегда начинается с этой буквы.
  • R – указывает на версию структуры идентификатора. Поскольку SID никогда не может быть изменен, этот параметр всегда равен 1.
  • X – показывает наивысший уровень идентификации, которым обладает созданный объект. Значение этого параметра варьируется от 0 до 5 (см. таблицу 4). Например, параметр Х в SID любой группы безопасности или учетной записи пользователя в домене имеет значение 5, а группа EveryOne (все) – 0.
  • Y1-Y2-Yn-1 – идентификатор домена.
  • Yn – относительный идентификатор (RID, relative IDs), который показывает порядковый номер объекта с момента создания Active Directory. Для встроенных объектов зарезервирован диапазон RID от 0 до 999. Например, для администратора – 500, для гостя – 501. Первой учетной записи, созданной в любой локальной системе или домене NT/2k, присваивается RID 1000, а каждому последующему объекту – следующий за ним порядковый номер (1001, 1002, 1003 и т. д.), причем при удалении объекта его номер уже никогда не используется при создании новых объектов.

Таблица 4. Расшифровка значений параметра «уровень идентификации» SID

Идентификатор

Значение

SECURITY_NULL_SID_AUTHORITY

0

SECURITY_WORLD_SID_AUTHORITY

1

SECURITY_LOCAL_SID_AUTHORITY

2

SECURITY_CREATOR_SID_AUTHORITY

3

SECURITY_NON_UNIQUE_AUTHORITY

4

SECURITY_NT_AUTHORITY

5

Чтение SID из Active Directory

В Active Directory SID хранится в переменной objectSID как массив, состоящий из бинарных элементов (см. рис. 1). Размер любого SID в Active Directory – 28 байт. Рассмотрим процесс преобразования бинарной записи идентификатора безопасности в традиционный (строковый) вид.

В бинарной форме идентификатор безопасности можно записать в общем виде так:

A-B-C-Z1-Z2-…-Zn-1-Zn (2)

Рассмотрим преобразование идентификатора безопасности из бинарного вида в строку на примере доменной учетной записи TEST (см. рис. 4).

Рисунок 4. SID в Active Directory

Рисунок 4. SID в Active Directory

Каждый элемент массива – это 1 байт или 8 бит. Для преобразования идентификатор (формула 3) разбивают на группы по 4 байта. Исключение составляют первые 8 байт. Они разбиваются на три группы: первые две по байту, последняя – 6 байт. Такое разбиение обусловлено форматом традиционной формы записи (формула 1).

01 05 00 00 00 00 00 05 15 00 00 00 2C 8F EC FB E5 F2 48 01 35 A6 99 55 26 1B 00 00 (3)

В первом байте (см. таблицу 4) хранится версия структуры идентификатора. В формуле 1 это параметр R, в формуле 2 – A. Как уже отмечалось ранее, он всегда равен 1.

Таблица 5. Поэтапное преобразование SID

Бинарный вид

Канонический (строковый) вид

Положение в бинарной записи

Комментарий

01

S-1

1-й байт (1 байт)

К идентификатору добавляется признак SID – S

05

5 разделов (5=0x5)

2-й байт (1 байт)

Не участвует в формуле SID. Несет информационную нагрузку о количестве идентификационных групп

00 00 00 00 00 05

05 (0x00000005)

3-8 байты (6 байт)

Смотри таблицу 6. Расшифровка значений параметра «уровень идентификации» SID

15 00 00 00

21 (0x00000015)

9-12 байты (4 байта)

Перед преобразованием из 16‑ричной системы записывают байты в обратном порядке

2C 8F EC FB

4226584364 (0xFBEC8F2C)

13-16 байты (4 байта)

E5 F2 48 01

21557989 (0x0148F2E5)

17-20 байты (4 байта)

35 A6 99 55

1436132917 (0x5599A635)

21-24 байты (4 байта)

26 1B 00 00

6950 (0x00001B26)

25-28 байты (4 байта)

Во втором байте (см. таблицу 5) хранится количество групп по 4 байта, которые следуют за первыми тремя группами (формула 4, в ней первые 8 байт, распределены нестандартным образом (выделенны красным цветом и подчеркнуты). Остальная информация разделена на группы по 4 байта (выделенны фиолетовым цветом и подчеркнуты)). В формуле составления идентификатора не участвует.

В следующих 6 байтах (48 битах) хранится значение наивысшего уровня идентификации.

01 05 00 00 00 00 00 05 15 00 00 00 2C 8F EC FB E5 F2 48 01 35 A6 99 55 26 1B 00 00 (4)

Преобразование осуществляется по следующему принципу. Каждая группа перезаписывается с конца в шестнадцатеричной форме (формула 5).

S — 0x1 — 0x5 — 0 x 00 00 00 00 00 05 — 0 x 00 00 00 15 — 0 x FB EC 8F 2C — 0 x 01 48 F2 E5 — 0 x 55 99 A6 35 — 0 x 00 00 1B 26 (5)

Перед записью добавляют символ S, свидетельствующий о том, что это идентификатор безопасности. А 2-й байт исключают, поскольку он несет информационную нагрузку. Далее полученные числа преобразуются из 16-ричной системы исчисления в 10-ричную (формула 6). На этом преобразование закончено.

S — 1 — 5 — 21 — 4226584364 — 21557989 — 1436132917 — 6950 (6)

Определение SID пользователя с помощью утилиты GetSID

Чтобы узнать SID пользователя, можно воспользоваться утилитой GetSID, входящей в состав Windows 2000 Resource Kit Tools. Утилиту можно загрузить с сайта Microsoft: http://download.microsoft.com/download/win2000platform/Getsid/1.0/NT5/EN-US/getsid.exe. В первую очередь GetID.exe предназначена для сравнения SID разных пользователей, однако она может с успехом использоваться для получения SID конкретного пользователя. После завершения работы мастера утилиту и сопутствующую документацию можно найти в каталоге C:\Program Files\Resource Kit.

Утилита GetSID.exe запускается из командной строки и имеет следующий синтаксис:

GetSID.exe \\server1 account \\server2 account

Для определения SID рекомендуется задать две одинаковые пары параметров: сервер и имя учетной записи в сети. Если необходимо определить SID доменной учетной записи, то в качестве сервера необходимо указать либо имя контроллера домена, либо имя домена в сокращенной форме. Например, необходимо определить SID пользователя test в домене MSK. Для этого выполним команду:

GetSID.exe \\MSK test \\MSK test

В результате выполнения этой команды на экран будет выведено сообщение, показанное на рис. 5.

Рисунок 5. Определение SID пользователя с помощью утилиты GetSID.exe

Рисунок 5. Определение SID пользователя с помощью утилиты GetSID.exe

Широко известные идентификаторы SID

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

Таблица 6. Широко известные идентификаторы

SID

Объект

Комментарий

S-1-1-0

Everyone

Группа, в которую входят все пользователи, даже анонимные пользователи и гости. Принадлежность контролируется ОС

S-1-3-0

Creator Owner

Замещающий элемент в наследуемой записи управления доступом (ACE). При наследовании ACE система замещает этот SID идентификатором SID создателя объекта

S-1-5-18

Local System

Учетная запись службы, используемая операционной системой

S-1-5-domain-501

Guest

Учетная запись для лиц, не имеющих индивидуальной учетной записи. Для данной учетной записи пароль не требуется. По умолчанию учетная запись Guest отключена

S-1-5-domain-512

Domain Admins

Глобальная группа, членам которой разрешено управлять доменом. По умолчанию группа Domain Admins является членом группы Administrators на всех компьютерах, входящих в домен, включая контроллеры доменов. Группа Domain Admins по умолчанию является владельцем любого объекта, созданного любым членом группы

S-1-5-domain-513

Domain Users

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

S-1-5-domain-515

Domain Computers

Глобальная группа, в которую входят все клиенты и серверы, входящие в домен

S-1-5-root domain-519

Enterprise Admins

Универсальная группа в домене с основным режимом; глобальная группа в домене со смешанным режимом. Данной группе разрешено вносить изменения на уровне леса в Active Directory, например добавлять дочерний домен. По умолчанию единственным членом группы является учетная запись Administrators для корневого домена леса

S-1-5-32-544

Administrators

Встроенная группа. После первоначальной установки операционной системы единственным членом этой группы является учетная запись Administrators. Когда компьютер присоединяется к домену, группа Domain Admins добавляется к группе Administrators. Когда сервер становится контроллером домена, группа Enterprise Admins также добавляется к группе Administrators

S-1-5-32-545

Users

Встроенная группа. После первоначальной установки операционной системы единственным членом этой группы является группа «Прошедшие проверку». Когда компьютер присоединяется к домену, группа Domain Users добавляется к группе Users на этом компьютере

S-1-5-32-546

Guests

Встроенная группа. По умолчанию единственным членом группы является учетная запись Guest. Группа Guests предоставляет возможность пользователям периодически или однократно входить в систему с ограниченными правами встроенной в компьютер учетной записи Guest

S-1-5-32-547

Power Users

Встроенная группа. По умолчанию в этой группе нет членов. Членам группы Power Users разрешено создавать локальных пользователей и группы; изменять и удалять созданные ими учетные записи; удалять пользователей из групп Power Users, Users и Guests. Также членам группы Power Users разрешается устанавливать программы; создавать, удалять локальные принтеры и управлять ими; создавать и удалять общие файловые ресурсы

Идентификатор безопасности UUID

Универсальный уникальный идентификатор активно используется для создания программного обеспечения. Все объекты Windows имеют свой уникальный идентификатор – UUID. Перечень всех идентификаторов, используемых в данном компьютере, можно найти в реестре в ветви HKEY_CLASSES_ROOT\CLSID (см. рис. 6).

Рисунок 6. Папка CLSID

Рисунок 6. Папка CLSID

Каждая UUID-папка имеет внутреннюю структуру, в которой находятся параметры, определяющие местоположение объекта, контекстное меню, значок объекта и другие свойства. В таблице 7 приведены стандартизованные UUID объектов, которые во всех версиях Windows одинаковы.

Таблица 7. Некоторые стандартизованные UUID

UUID

Объект

{4e1-3957-11d2-a40b-0c5020524153}

Administrative Tools

{85bbd92o-42a0-1o69-a2e4-08002b30309d}

Briefcase

{21ec2o2o-3aea-1o69-a2dd-08002b30309d}

Control Panel

{d20ea4e1-3957-11d2-a40b-0c5020524152}

Fonts

{ff393560-c2a7-11cf-bff4-444553540000}

History

{00020d75-0000-0000-c000-000000000046}

Inbox

{00028b00-0000-0000-c000-000000000046}

Microsoft Network

{20d04fe0-3aea-1069-a2d8-08002b30309d}

My Computer

{450d8fba-ad25-11d0-98a8-0800361b1103}

My Documents

{208d2c60-3aea-1069-a2d7-08002b30309d}

My Network Places

{1f4de370-d627-11d1-ba4f-00a0c91eedba}

Network Computers

{7007acc7-3202-11d1-aad2-00805fc1270e}

Network Connections

{2227a280-3aea-1069-a2de-08002b30309d}

Printers and Faxes

{7be9d83c-a729-4d97-b5a7-1b7313c39e0a}

Programs Folder

{645ff040-5081-101b-9f08-00aa002f954e}

Recycle Bin

{e211b736-43fd-11d1-9efb-0000f8757fcd}

Scanners and Cameras

{d6277990-4c6a-11cf-8d87-00aa0060f5bf}

Scheduled Tasks

{48e7caab-b918-4e58-a94d-505519c795dc}

Start Menu Folder

{7bd29e00-76c1-11cf-9dd0-00a0c9034933}

Temporary Internet Files

{bdeadf00-c265-11d0-bced-00a0c90ab50f}

Web Folders

Генерация UUID

При создании какого-либо приложения с помощью Microsoft Visual Studio .NET, GUID объектов формируется автоматически. Если необходимо сгенерировать идентификаторы явным образом воспользовавшись одним из оn-line генераторов: http://www.famkruithof.net/uuid/uuidgen.

Заключение

В заключение хочется сказать: несмотря на то, что предложенные знания не являются самыми необходимыми, они важны. Понимание процесса образования SID и других идентификаторов безопасности поможет решить множество проблем, возникающих в процессе эксплуатирования сети. Многие «чудеса» станут вполне объяснимыми.

  1. КВ 288900 «How To Use Visual Basic to Construct a Well-Known SID».
  2. RFC 4122 «A Universally Unique IDentifier (UUID) URN Namespace».
  3. CLSID List. Windows Class Identifiers – http://www.autohotkey.com/docs/misc/CLSID-List.htm.

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

During a Windows Server 2012 R2 Hyper-V implementation I needed to identify all the iSCSI disks (LUNs) presented by an EMC VNX SAN to the Hyper-v Failover cluster. Each presented iSCSI disk has a unique LUN ID. To View the LUN ID of a disk, you can use the diskpart command. Here are the steps to view the LUN ID of a disk:

  • View the disks

list disk

  • Select a disk

select disk <number>

image

  • View the LUN ID of the disk

detail disk

image

I didn’t find a PowerShell command to view the LUN IDs. You can create a PowerShell script that uses Diskpart to view all the disks and the corresponding LUN IDs.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Rsat windows 10 что это
  • 0x0000011b при подключении принтера windows 10 по сети
  • Windows 7 starter oem rus
  • Language packs for windows xp
  • Можно ли спокойно удалить папку windows old