Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Безопасность Windows позволяет управлять доступом к именованным каналам. Дополнительные сведения о безопасности см. в разделе Access-Controlмодели.
Вы можете указать дескриптора безопасности для именованного канала при вызове функции CreateNamedPipe. Дескриптор безопасности управляет доступом как к клиенту, так и к серверам с именованным каналом. Если указать NULL, именованный канал получает дескриптор безопасности по умолчанию. Списки управления доступом в дескрипторе безопасности по умолчанию для именованного канала предоставляют полный контроль учетной записи LocalSystem, администраторам и владельцу создателя. Они также предоставляют доступ на чтение членам группы "Все" и анонимной учетной записи.
Чтобы получить дескриптор безопасности именованного канала, вызовите функцию GetSecurityInfo. Чтобы изменить дескриптор безопасности именованного канала, вызовите функциюSetSecurityInfo.
Когда поток вызывает CreateNamedPipe, чтобы открыть дескриптор к концу существующего именованного канала, система выполняет проверку доступа перед возвратом дескриптора. Проверка доступа сравнивает маркер доступа потока и запрошенные права доступа с DACL в дескрипторе безопасности именованного канала. Помимо запрошенных прав доступа, DACL должен разрешить вызывающий поток FILE_CREATE_PIPE_INSTANCE доступ к именованной каналу.
Аналогичным образом, когда клиент вызывает функцию CreateFile или CallNamedPipe для подключения к концу именованного канала, система выполняет проверку доступа перед предоставлением доступа клиенту.
Дескр иптор, возвращаемый функцией CreateNamedPipe, всегда имеет доступ SYNCHRONIZE. Он также имеет GENERIC_READ, GENERIC_WRITE или оба, в зависимости от открытого режима канала. Ниже приведены права доступа для каждого открытого режима.
Открытый режим | Права доступа |
---|---|
PIPE_ACCESS_DUPLEX (0x00000003) | FILE_GENERIC_READ, FILE_GENERIC_WRITE и СИНХРОНИЗАЦИЯ |
PIPE_ACCESS_INBOUND (0x00000001) | FILE_GENERIC_READ и СИНХРОНИЗАЦИЯ |
PIPE_ACCESS_OUTBOUND (0x00000002) | FILE_GENERIC_WRITE и СИНХРОНИЗАЦИЯ |
FILE_GENERIC_READ доступ для именованного канала объединяет права на чтение данных из канала, атрибуты канала чтения, чтение расширенных атрибутов и чтение DACL канала.
FILE_GENERIC_WRITE доступ для именованного канала объединяет права на запись данных в канал, добавление к нему данных, запись атрибутов канала, запись расширенных атрибутов и чтение DACL канала. Так как FILE_APPEND_DATA и FILE_CREATE_PIPE_INSTANCE имеют то же определение, поэтому FILE_GENERIC_WRITE позволяет создавать канал. Чтобы избежать этой проблемы, используйте отдельные права вместо использования FILE_GENERIC_WRITE.
Вы можете запросить ACCESS_SYSTEM_SECURITY права доступа к объекту именованного канала, если требуется прочитать или записать SACL объекта. Дополнительные сведения см. в Access-Control списков (ACL) и права доступа SACL.
Чтобы запретить удаленным пользователям или пользователям в другом сеансе служб терминалов доступ к именованному каналу, используйте идентификатор безопасности входа в daCL для канала. Идентификатор безопасности входа также используется в входах запуска от имени; это идентификатор безопасности, используемый для защиты пространства имен объекта для каждого сеанса. Дополнительные сведения см. в статье Получение идентификатора безопасности входа в C++.