Como adicionar permissões a pipes nomeados do Windows usando o PowerShell?

Como adicionar permissões a pipes nomeados do Windows usando o PowerShell?

Como posso adicionar permissões para um grupo específico ler/gravar em um pipe nomeado existente, usando um script do PowerShell?

Isto é o mais longe que eu fui:

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

erro de lançamento

Não é possível converter o argumento "rule", com valor: "System.IO.Pipes.PipeAccessRule", para "AddAccessRule" para digitar "System.Security.AccessControl.FileSystemAccessRule"

Responder1

$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)

Responder2

embora a solução de Ben funcione, as regras de acesso são perdidas sempre que o Docker deamon é reiniciado.

Mas há uma correção permanente no caso do Docker:
Crie o arquivo %programdata%\docker\config\daemon.jsoncom o seguinte conteúdo:

{
    "group": "Users"
}

Isso permite que todos os usuários do grupo Windows Usersabram o pipe nomeado sem privilégios de administrador.

Melhor janeiro


Isto é odocumentação.

-G, --grupo string | Grupo para o soquete unix (padrão "docker")

Diz "soquete unix", mas também funciona para o pipe nomeado.

O grupo padrão parece ser docker, mas não é criado pelo deamon. E o Docker Desktop cria um grupo chamado docker-users.

informação relacionada