无法删除引用孤立 SID 的 ACL 条目

Posted

技术标签:

【中文标题】无法删除引用孤立 SID 的 ACL 条目【英文标题】:Can't remove ACL entry that refers to orphaned SID 【发布时间】:2021-06-12 00:18:30 【问题描述】:

我(仍在)运行 Win-7 Home Premium。我了解这些风险,并且出于多种原因,我仍然不想升级到 Win-10 或重建我的 win-7 安装来纠正这个问题。该系统是 8 年前建立的,多年来,我创建和删除了许多用户帐户。我目前有三个用户帐户:

Administrator (SID 500)
AdminUser (SID 1003)
NormalUser (SID 1007)

在此过程中,我删除了 Windows 在其原始安装期间创建的原始用户帐户,我认为该帐户被分配了 SID 1000。

在当前系统上,事情通常按预期工作。但我偶尔会遇到奇怪的行为和失败。在故障排除过程中,我发现许多文件夹保留了引用现在孤立的 SID 1000 的 ACL 条目。例如,命令

icacls c:\ProgramData /save output.txt

产生以下

ProgramData
D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;S-1-5-21-xxx-yyy-zzz-1000)

以上表示NT AUTHORITY\SYSTEMBUILTIN\Administrators拥有Full Control权限。它还列出了现在孤立的 1000 个用户帐户的完整 SID。我想删除这些对虚假 SID 的引用,但命令:

icacls C:\ProgramData /remove S-1-5-21-xxx-yyy-zzz-1000

从提升的命令提示符运行时不执行任何操作,报告 Successfully processed 0 files。使用文件管理器时,文件夹PropertiesSecurity 选项卡的Advanced Security Settings 对话框中的Remove 按钮灰显。所以我也不能以这种方式删除权限。

如何删除对这个孤立 SID 的引用?或者将其更改为引用合法的 SID?

或者,我如何将与现有 1003 用户关联的 SID 更改为 1000,以便对 SID 1000 的引用正确解析为活动用户帐户?

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

有一个工具 subinacl.exe 由 Microsoft 提供,直到 2004 年。现在有点难找(参见https://answers.microsoft.com/en-us/windows/forum/all/i-wanted-to-download-subinacl-but-i-cant-find-it/a8bf4c50-1d43-4f03-b6f9-f62deab010fb)。 使用此工具,您可以从文件夹和子文件夹中删除所有无效的 SID。

subinacl /subdirectories "C:\folder\*.*" /cleandeletedsidsfrom=<domain>

这对我很有帮助,但输出似乎已损坏。所以我通过 >logfile.txt

绕过了输出到一个文件

【讨论】:

【参考方案2】:

我刚发布我的问题,就找到了答案:

Right-click a File Explorer shortcut pinned to my TaskBar
Select Run as Administrator
Browse to the desired Folder, right-click and select Properties
Select the Security Tab
Remove the undesired User

不知道为什么我之前没有考虑使用提升的文件资源管理器。但它成功更新了 ACL,现在对虚假 SID 的引用消失了。 :-)

【讨论】:

以上是关于无法删除引用孤立 SID 的 ACL 条目的主要内容,如果未能解决你的问题,请参考以下文章

使用 PowerShell 从 Azure 中存储帐户的管理 ACL 列表中删除 ACL 条目

无法快速删除 Parse 对象 - ACL 问题?

ghost系统sid重复无法加入域?

从 TFS 项目管理员中删除“编辑团队项目级别权限 ACL”,以便他们无法添加用户

实体框架 6 和 SQLite - 无法创建条目 PK 之前删除的条目

Spring Security - ACL readAclsById 不按 SID 过滤