Как добавить разрешения для именованных каналов Windows с помощью PowerShell?

Как добавить разрешения для именованных каналов Windows с помощью PowerShell?

Как добавить разрешения для определенной группы на чтение/запись из существующего именованного канала, используя скрипт PowerShell?

Вот насколько я продвинулся:

$AccessRule = New-Object System.IO.Pipes.PipeAccessRule( "Users", "FullControl", "Allow" )
$PipeSecurity = [System.IO.Directory]::GetAccessControl("\\.\pipe\docker_engine")
$PipeSecurity.AddAccessRule($AccessRule) 

выдать ошибку

Невозможно преобразовать аргумент "rule" со значением: "System.IO.Pipes.PipeAccessRule" для "AddAccessRule" в тип "System.Security.AccessControl.FileSystemAccessRule"

решение1

$account="<DOMAIN>\<USERNAME>"
$npipe = "\\.\pipe\docker_engine"                                                                                 
$dInfo = New-Object "System.IO.DirectoryInfo" -ArgumentList $npipe                                               
$dSec = $dInfo.GetAccessControl()                                                                                 
$fullControl =[System.Security.AccessControl.FileSystemRights]::FullControl                                       
$allow =[System.Security.AccessControl.AccessControlType]::Allow                                                  
$rule = New-Object "System.Security.AccessControl.FileSystemAccessRule" -ArgumentList $account,$fullControl,$allow
$dSec.AddAccessRule($rule)                                                                                        
$dInfo.SetAccessControl($dSec)

решение2

Хотя решение Бена работает, правила доступа теряются при каждом перезапуске демона Docker.

Но в случае с Docker есть постоянное решение:
создайте файл %programdata%\docker\config\daemon.jsonсо следующим содержимым:

{
    "group": "Users"
}

Это позволяет всем пользователям в группе Windows Usersоткрывать именованный канал без прав администратора.

Лучший Ян


Этодокументация.

-G, --group string | Группа для сокета unix (по умолчанию "docker")

Там написано «unix socket», но работает и для именованного канала.

Группа по умолчанию, похоже docker, , но она не создана демоном. А Docker Desktop создает группу с именем docker-users.

Связанный контент