
¿Cómo puedo agregar permisos para que un grupo específico lea/escriba desde una canalización con nombre existente, usando un script de PowerShell?
Hasta aquí llegué:
$AccessRule = New-Object System.IO.Pipes.PipeAccessRule( "Users", "FullControl", "Allow" )
$PipeSecurity = [System.IO.Directory]::GetAccessControl("\\.\pipe\docker_engine")
$PipeSecurity.AddAccessRule($AccessRule)
error de tiro
No se puede convertir el argumento "regla", con valor: "System.IO.Pipes.PipeAccessRule", para que "AddAccessRule" escriba "System.Security.AccessControl.FileSystemAccessRule"
Respuesta1
$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)
Respuesta2
Si bien la solución de Ben funciona, las reglas de acceso se pierden cada vez que se reinicia el demonio Docker.
Pero hay una solución permanente en el caso de Docker:
cree el archivo %programdata%\docker\config\daemon.json
con el siguiente contenido:
{
"group": "Users"
}
Esto permite que todos los usuarios del grupo de Windows Users
abran la canalización con nombre sin privilegios de administrador.
mejor enero
Este es eldocumentación.
-G, --cadena de grupo | Grupo para el socket Unix (por defecto "docker")
Dice "socket Unix" pero también funciona para la tubería con nombre.
El grupo predeterminado parece ser docker
, pero no lo crea el demonio. Y Docker Desktop crea un grupo llamado docker-users
.