Поделиться через


Привилегии

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

  • Привилегии управляют доступом к системным ресурсам и задачам, связанным с системой, а доступ к защищаемым объектам .
  • Системный администратор назначает привилегии учетным записям пользователей и групп, в то время как система предоставляет или запрещает доступ к защищаемому объекту на основе прав доступа, предоставленных в ACEs в DACL объекта.

Каждая система имеет базу данных учетной записи, в которой хранятся привилегии, удерживаемые учетными записями пользователей и групп. Когда пользователь входит в систему, система создает маркер доступа , содержащий список привилегий пользователя, включая предоставленные пользователю или группам, к которым принадлежит пользователь. Обратите внимание, что привилегии применяются только к локальному компьютеру; Учетная запись домена может иметь разные привилегии на разных компьютерах.

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

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

API Windows определяет набор строковых констант, таких как SE_ASSIGNPRIMARYTOKEN_NAME, для идентификации различных привилегий. Эти константы одинаковы для всех систем и определены в Winnt.h. Таблица привилегий, определенных Windows, см. в разделе Константы привилегий. Однако функции, которые получают и настраивают привилегии в маркере доступа, используют тип LUID LUID для идентификации привилегий. Значения LUID для привилегий могут отличаться от одного компьютера к другому и от одной загрузки к другому на одном компьютере. Чтобы получить текущий LUID, соответствующий одной из строковых констант, используйте функцию LookupPrivilegeValue. Используйте функцию LookupPrivilegeName для преобразования LUID в соответствующую константу строки.

Система предоставляет набор отображаемых имен, описывающих каждый из привилегий. Это полезно, если необходимо отобразить описание привилегии для пользователя. Используйте функцию LookupPrivilegeDisplayName, чтобы получить строку описания, соответствующую строковой константе для привилегий. Например, в системах, использующих английский язык США, отображаемое имя привилегии SE_SYSTEMTIME_NAME — "Изменение системного времени".

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

Системный администратор может использовать такие средства администрирования, как User Manager, для добавления или удаления привилегий для учетных записей пользователей и групп. Администраторы могут программно использовать функции локального центра безопасности (LSA) для работы с привилегиями. LsaAddAccountRights и функции LsaRemoveAccountRights добавляют или удаляют привилегии из учетной записи. Функция LsaEnumerateAccountRights перечисляет привилегии, удерживаемые указанной учетной записью. Функция LsaEnumerateAccountsWithUserRight перечисляет учетные записи, имеющие указанные привилегии.

константы авторизации

включение и отключение привилегий в C++