Wie füge ich mithilfe von Powershell Berechtigungen zu benannten Windows-Pipes hinzu?

Wie füge ich mithilfe von Powershell Berechtigungen zu benannten Windows-Pipes hinzu?

Wie kann ich mithilfe eines Powershell-Skripts einer bestimmten Gruppe Lese-/Schreibberechtigungen für eine vorhandene Named Pipe hinzufügen?

So weit bin ich gekommen:

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

Fehler auslösen

Das Argument „rule“ mit dem Wert „System.IO.Pipes.PipeAccessRule“ für „AddAccessRule“ kann nicht in den Typ „System.Security.AccessControl.FileSystemAccessRule“ konvertiert werden.

Antwort1

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

Antwort2

während Bens Lösung funktioniert, gehen die Zugriffsregeln bei jedem Neustart des Docker-Daemons verloren.

Aber es gibt eine dauerhafte Lösung für Docker:
Erstellen Sie die Datei %programdata%\docker\config\daemon.jsonmit folgendem Inhalt:

{
    "group": "Users"
}

Dadurch können alle Benutzer in der Windows-Gruppe Usersdie benannte Pipe ohne Administratorrechte öffnen.

Bester Jan


Dies ist dasDokumentation.

-G, --group string | Gruppe für den Unix-Socket (Standard „Docker“)

Es heißt „Unix-Socket“, funktioniert aber auch für die benannte Pipe.

Die Standardgruppe scheint zu sein docker, wird aber nicht vom Daemon erstellt. Und Docker Desktop erstellt eine Gruppe namens docker-users.

verwandte Informationen