У меня есть программа на 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));