当文件归来自死域的用户所有时,如何在命令行重置文件所有权?

当文件归来自死域的用户所有时,如何在命令行重置文件所有权?

我想讲一个故事,所以如果你想了解问题的核心,请跳到水平线。

原标题:来自死域的僵尸不会给我我的文件!

我在恢复一些旧的存档磁带时遇到了问题,其中的文件和文件夹由不再存在的域中的不再存在的用户所拥有。

磁带包含从本地 NTFS 卷和 CIFS NAS 存储阵列备份的 Windows 2000、2003、2008、2012 R2(甚至可能有一些 NT4)中的文件,我正在 Windows Server 2022 中恢复它们。

在过去,保存文件所有权非常有用,因为这是许多类型文件的唯一作者记录。

但 2000 年代初似乎有一段时间,离职员工的 Active Directory 帐户被删除而不是禁用。当然,他们拥有这些磁带上的文件和文件夹。

很久以后,发生了域重命名,并且由于用户已被删除,因此无法将他们的 SID 添加到 SID 历史记录中,而且其范围也是未知的。


不管怎样,今天我要从这些旧磁带中恢复文件,Windows 正在恢复过去的旧 DACL 和所有者。大错误:我不仅不能以管理员身份访问这些文件和文件夹,也不能强制继承这些文件和文件夹的权限,甚至不能使用 icacls 和提升的命令提示符重置所有者。

icacls <folder> /setowner Administrators /t /c
icacls <folder> /reset /t /c

我还有一个使用 xcacls.vbs 的脚本,可以让我重置文件夹的所有者。

这对不属于僵尸的文件有效,但 Windows 拒绝访问很多文件。

但是,我能够在文件资源管理器 GUI 中重置所有者,并将新所有者推送到下面的所有内容。“替换所有子对象权限等。”然后替换权限。然后我可以删除整个内容。

现在,我可以重新开始,而无需恢复 DACL 或所有者——但这样一来,原来的非僵尸作者就不得不被遗忘了。(备份软件要么全有要么全无)。

icacls并且xcacls不会清理所有者和 DACL,即使提升权限也是如此。但我可以在文件资源管理器中批量执行此操作!有没有办法使用命令提示符更有选择地执行此操作?


更新:好的,所以@u1686_grawity 的答案让我走上了正确的道路。我能够使用 takeown 删除文件并重新开始。

问题是,takeown /r它是一种钝器,只会夺取所有文件和文件夹的所有权。我本来可以从磁带中恢复文件,而无需恢复其原始 ACL 和所有者。目标是通过重置 ACL 尽可能保留原始文件所有权。

为了更具选择性,我将的输出重定向icacls /reset /t /c /q到文本文件,然后使用文本编辑器将每个access denied错误消息转换为takeown /F命令并将其保存为.bat文件。运行批处理文件并重复icacls /reset,我得到了下一级的新文件集。经过 10 次重复,修复了 267,678 个文件中的约 40,000 个。剩下 41 个文件拒绝被接管。36 个文件位于 2 个目录中,必须手动接管其所有权。

最后 5 个文件的名称中包含非 ASCII 字符。批处理文件只有在我以 DOS 编码保存时才会运行,UTF8 不起作用。

我能够手动取得最后 5 个文件的所有权。

花了大约 12 个小时,才录完一盘磁带。我不确定这样做是否值得。

答案1

使用的问题icacls /setowner在于,获得所有权并不会隐式授予您除“写入 ACL”之外的任何其他权利 - 特别是它实际上并没有授予您列出目录内容的权限,甚至没有授予您读取其 ACL 的权限。您需要取得顶级目录的所有权,然后重置其 DACL,然后取得第一级子目录的所有权,重置其 DACL,等等。

使用takeown /a /r /d y它来执行此操作;每次它找到无法列出的目录时,它都会自动重置 DACL。

或者,从 PSGallery 安装“PSPrivilege”PowerShell 模块并使用它来激活SeBackupPrivilegeSeRestorePrivilege。这些允许您广泛地绕过大多数 DACL 限制,包括能够编写 DACL(它实际上是 icacls 和 Explorer 用来设置任意所有者的),但默认情况下,它们对于管理员处于“保留但不活动”状态。一旦这两个特权处于活动状态,icacls 应该会更有效。

答案2

由于已经有了一个很好的答案,这可能是 OP 想要的,所以这里还有另一个选择。Linux 上的 NTFS 支持往往非常有用(或者说是坏的,这取决于你如何看待它,我想)因为它忽略了所有权问题的安全性。以 root 身份挂载,获取文件,完成。当你回到 Windows 时,它们可能仍然是错误的(Windows 关心 NTFS 安全性),但至少你可以访问它们。

相关内容