Для чего нужны шестой и седьмой (десятичные значения 32 и 64) в PipeAccessRights и нужно ли их удалять? - PullRequest
0 голосов
/ 06 июня 2019

У меня есть программа на C #, которая создает экземпляр NamedPipeServerStream. Я хочу убедиться, что права доступа заблокированы, так что только текущий пользователь может использовать его. Я заметил, что есть группы, которым по умолчанию предоставляется доступ, две из которых - LocalSystem и Administrators. При попытке удалить эти права я заметил, что у них есть PipeAccessRights.FullControl, а также 6-й и 7-й бит (десятичный эквивалент 32 и 64). Эти биты не перечислены в документации: https://docs.microsoft.com/en-us/dotnet/api/system.io.pipes.pipeaccessrights?view=netframework-4.8

Для чего эти биты и можно ли их безопасно удалить?

Я успешно смог удалить их, приведя целое число (2032127) к перечислению PipeAccessRights.

Вот что я сейчас делаю для создания канала и удаления прав всех пользователей / групп, кроме текущего:

var pipeServer = new NamedPipeServerStream(this.pipeName, PipeDirection.InOut, 5, PipeTransmissionMode.Byte);

var ps = pipeServer.GetAccessControl();

ps.RemoveAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), PipeAccessRights.Read | PipeAccessRights.Synchronize, AccessControlType.Allow));
ps.RemoveAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.AnonymousSid, null), PipeAccessRights.Read | PipeAccessRights.Synchronize, AccessControlType.Allow));
ps.RemoveAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null), (PipeAccessRights)2032127, AccessControlType.Allow));
ps.RemoveAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null), (PipeAccessRights)2032127, AccessControlType.Allow));

1 Ответ

1 голос
/ 07 июня 2019

Как сказал @HansPassant в комментарии к моему вопросу, 6-й бит (0x0020) - это доступ FILE_EXECUTE к файлу, а FILE_TRAVERSE - доступ к каталогу, а 7-й бит (0x0040) - доступ FILE_DELETE_CHILD для каталога.Я предполагаю, что эти биты установлены в true для администраторов по умолчанию, но на самом деле они не применимы к каналам.

Документация здесь: https://docs.microsoft.com/en-us/windows/desktop/fileio/file-access-rights-constants

Что касается удаления этих прав, @JeroenMostertупоминает, что это, вероятно, не будет иметь никакого эффекта, поскольку администраторы могут переопределить разрешения.Кроме того, более логичным решением будет полная замена прав доступа к каналу теми правами, которые мне нужны, а именно, только доступ на чтение / запись для текущего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...