如何使用powershell為Windows命名管道新增權限?

如何使用powershell為Windows命名管道新增權限?

如何使用 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

雖然 Ben 的解決方案確實有效,但只要 Docker 守護程式重新啟動,存取規則就會遺失。

但是對於 Docker,有一個永久修復:建立包含以下內容的
檔案:%programdata%\docker\config\daemon.json

{
    "group": "Users"
}

這允許 Windows 群組中的所有使用者Users在沒有管理員權限的情況下開啟命名管道。

最佳一月


這是文件

-G, --group 字串 | unix 套接字組(預設為「docker」)

它說“unix socket”,但也適用於命名管道。

預設組似乎是docker,但不是由守護程序創建的。 Docker Desktop 建立了一個名為docker-users.

相關內容