是否有解決方案將未知帳戶 (S-1-5-21-*) SID 替換為現有 SID

是否有解決方案將未知帳戶 (S-1-5-21-*) SID 替換為現有 SID

我在舊/其他 Windows 安裝的許多文件上都有一個典型的“帳戶未知”,並且到處都有大量典型的答案。
但是,我並不是在尋找典型的takeownsubinaclxcaclsGUI 解決方案。我想將這些未知的 SID 變更為已知的本機 SID,但保留權限類型和繼承。

到目前為止,唯一接近我正在尋找的東西是 PowerShell 腳本:http://poshcode.org/2081允許刪除網路共用中未知的 SID。它包含查找未知 SID 的基本邏輯,但我尚未找到替換FileSystemAccessRule物件中 SID 的方法,但我對 PowerShell 或 .NET 不太熟練。
如果我沒記錯的話本文MS TechNet 上建議建置FileSystemAccessRule並且可以實現。

有沒有人知道是否有更好的解決方案?也許有適合這項工作的應用程式、命令列工具或 cmdlet?

答案1

在 Powershell 中Get-AclSet-Acl您可以透過操作 SDDL 字串來修改 ACL。

首先取得ACL對象。

$acl = Get-Acl -Path C:\YourFile.txt

現在取得 SDDL 字串:

$sddl = $acl.sddl

現在您可以將字串中的 SID 替換為您想要的內容。這使用正規表示式來更新部分匹配。

$sddl2 = $sddl -replace "S-1-5-21-[0-9-]+", "ExistingSIDHere"

然後更新 ACL 物件:

$acl.SetSecurityDescriptorSddlForm($sddl2)

然後設定對象的ACL:

Set-Acl -AclObject $acl -Path C:\YourFile.txt

相關內容