
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.json
com o seguinte conteúdo:
{
"group": "Users"
}
Isso permite que todos os usuários do grupo Windows Users
abram 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
.