Шаг 90 - Что такое SID ?

SID(security identifier) - идентификатор безопасности. Данная структура уникально идентифицирует пользователя или группу в домене Windows NT. Именно по этому идентификатору определяют пользователей. Не по имени и по паролю, а по этому идентификатору. Например, Вы создали учетную запись. Потом стерли ее. Если снова создать запись с тем же именем и паролем SID будет уже другой и права не сохраняться. SID создается при создании учетной записи. Так же его имеют и все машины в сети. Отсюда понятна проблема, которая может случиться. Если у вас один первичный контролер домена, то после выхода его из строя и инсталляции снова Windows NT Server все и всех придется заново регистрировать и давать привилегии. Все строить на простой идеи. Этот идентификатор генерируется при создании учетной записи. Повторное создание приведет к генерации нового SID и это не зависит от паролей и имен.

Сам SID для программиста это структура.

typedef struct _SID
{
	BYTE Revision;
	BYTE SubAuthorityCount;
	SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
	DWORD SubAuthority[ANYSIZE_ARRAY];
} SID;
typedef PVOID PSID;

Хранится все это в виде двоичных значений. Но есть ряд функций преобразования:

ConvertSidToStringSid  - SID->String
ConvertStringSidToSid  - String->SID

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

S-1-5-21-859275398-5967894345-141239485734-1105

Строковое представление SID имеет определенный формат S-I-R-S

S - с этой буквы начинается SID
R - число представляющее уровень контроля
I - идентификатор полномочий
S - идентификаторы подчиненных полномочий

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 23.09.2001