Форум программистов, компьютерный форум, киберфорум
Наши страницы

Списки контроля доступа Access Control List (ACL) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переменная ссылочного типа в прототипе функции http://www.cyberforum.ru/cpp-beginners/thread956466.html
Только начала изучать C++ и эти прототипы функций нигде не всртечал. Прописываю прототип функции со ссылкой: void dectohex(int&); При компиляции выдает ошибку: error: expected ';', ',' or ')'...
C++ Написать программу считалочка Народ помогите написать программу считалочка, суть самой программы - написать программу в которой водим количество играков, затем водим несколько слов через пробел. Программа и должна эти слова... http://www.cyberforum.ru/cpp-beginners/thread956465.html
C++ Дано целое k от 1 до 180. Определить, какая цифра находится в k-ой позиции последовательности
Товарищи, задача такая: Дано целое k от 1 до 180. Определить, какая цифра находится в k-ой позиции последовательности 10111213....9899 в которой выписаны подряд все двухзначные числа. Помогите...
C++ Перевести с Pascal на C++
Всем привет) есть задачи: 2) Слова, содержащие сочетание ‘кот’, расположить в конце последовательности, сохраняя исходный порядок следования слов. Есть решение этих задач, но нужно мне помочь...
C++ Вычислить значение функции http://www.cyberforum.ru/cpp-beginners/thread956451.html
Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент.
C++ Необходимо найти длины биссектрис Помогите, как дальше продолжить написание программы используя данную формулу lc=sqrt(a*b*(a+b+c)*(a+b-c))/a*b (формула по нахождению длин биссектрис зная длины сторон треугольника. Вот как я начала... подробнее

Показать сообщение отдельно
Убежденный
Ушел с форума
Эксперт С++
15701 / 7211 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
20.09.2013, 10:47
Для начала нужно разобраться с терминологией.
Что такое SID, что такое дескриптор безопасности и список контроля доступа, какие бывают
права доступа и как они наследуются, что такое привилегии, access token и т.д.
Описывать это все здесь не имеет смысла, лучше обратитесь к соответствующей литературе.

Создать защищенный объект можно разными способами.

Способ I.

1) Создайте SID-ы групп или пользователей, доступ которых к объекту нужно регламентировать.
Это можно сделать с помощью AllocateAndInitializeSid, но еще проще - через CreateWellKnownSid.

2) Заполните массив структур EXPLICIT_ACCESS, указав в каждом элементе тип доступа
(разрешать/запрещать), права доступа (например, GENERIC_ALL или GENERIC_READ, или
что-то более специфическое), а также SID, полученный в пункте 1.
Там же указываются различные флаги, например должны ли дочерние объекты наследовать
установленные права доступа или нет.

3) Дальше можно создать дескриптор безопасности - BuildSecurityDescriptor.
После этого данный дескриптор можно передавать как параметр структуры SECURITY_ATTRIBUTES при
создании объекта. Другой путь - вызвать SetEntriesInAcl, она вернет список контроля доступа (DACL),
который потом можно установить для уже созданного объекта при помощи таких функций, как
SetSecurityInfo или SetNamedSecurityInfo.

Способ II.

1) Опишите права доступа на языке SDDL (Security Descriptor Definition Language).
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Например, строка "O:BAG:BAD:P(A;;GA;;;BA)(A;;GR;;;WD)" означает следующее:

O:BA

(O)wner (владелец объекта) - встроенная группа "Администраторы", (B)uiltin (A)dministrators.

G:BA

(G)roup (первичная группа) - тоже Builtin Administrators.

D:P

(D)ACL (список контроля доступа), флаг (P) - protected, т.е. объект не наследует
права доступа от родительских объектов.

Дальше идут элементы контроля доступа, их два:

(A;;GA;;;BA) - это:

A - Allow Access, тип доступа = разрешающий
GA - GENERIC_ALL, полный доступ
BA - это SID группы/пользователя, в данном случае снова администраторы.

(A;;GR;;;WD) - это:

A - разрешающий доступ.
GR - GENERIC_READ, доступ только на чтение
WD - World Sid, группа "Все".

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

2) Вызываем функцию ConvertStringSecurityDescriptorToSecurityDescriptor.
Она сконвертирует строковое представление дескриптора безопасности в его бинарный формат.

3) С созданным дескриптором безопасности можно выполнять действия, аналогичные описанным в способе I.

Есть другие способы и другие функции.
Вот несколько примеров из MSDN:

Creating a Security Descriptor for a New Object in C++
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Modifying the ACLs of an Object in C++
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Taking Object Ownership in C++
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Enabling and Disabling Privileges in C++
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru