使用 ICACLS 删除 SID

使用 ICACLS 删除 SID

我正在尝试删除一个过时的 SID(该帐户显然已被删除)。

我尝试在服务器(win2003)和客户端(win7)上运行以下命令:

icacls c:\path /remove *S-1-5-21-1883347182-1220252494-433279356-1095 /T

但我总是得到输出

Successfully processed 0 files; Failed processing 0 files

它什么也不做。我怎样才能让它工作?

更新:

我用过访问枚举获取 SID,因为 icacls 仅显示“未完成帐户名和安全 ID 之间的映射。”但没有显示 sid。

AccessEnum 的输出是:

"Path"  "Read"  "Write" "Deny"  
"c:\path"   "Administrators, S-1-5-21-1883347182-1220252494-433279356-1095, ..."    "Administrators, S-1-5-21-1883347182-1220252494-433279356-1095, ..."    ""  

答案1

我对另一个人的建议类似问题

“也许你正在寻找 SUBINACL。下载它这里

subinacl.exe /help /cleandeletedsidsfrom提供以下内容:

/cleandeletedsidsfrom=域[=dacl|sacl|所有者|主组|全部]

删除所有包含已删除(无有效)来自 DomainName 的 Sid 的 ACE 您可以指定将扫描安全描述符的哪一部分(默认=全部) 如果删除所有者,则新所有者将是管理员组。 如果删除主要组,则新主要组将是用户组。 似乎您可以将它与/文件或者/分享或者/子目录如所须

答案2

我发现最便携且实际上最简单的使用/save/restore功能的方法icacls

icacls C:\ /save D:\creds.txt /T

然后我会使用 Vim 或其他gred/sed/awk类似工具来操作文件。这样我就可以删除 SID、替换 SID 等。处理完文件后,我会

icacls C:\ /restore D:\creds.new.txt /T

就是这样。无需下载其他程序。无需学习其他非标准命令行语法。我只需创建一个虚拟文件并使用 GUI 或其他任何工具来使 ACL 完全符合我的要求,使用它/save来查看生成的 ACE 字符串是什么样子,然后只需将该 ACE 字符串复制并粘贴到creds.new.txt.

答案3

你可以很容易地做到这一点设置ACL

SetACL -on C:\Path -ot file -actn trustee -trst 
       "n1:S-1-5-21-1883347182-1220252494-433279356-1095;s1:y;ta:remtrst;w:dacl"

答案4

为什么不直接使用 GUI?调出文件夹属性并从安全设置中删除不需要的 SID。这对我来说一直很有效。

相关内容