小编Spe*_*cer的帖子

当文件由死域中的用户拥有时,如何在命令行重置文件所有权?

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

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

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

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

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

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

很久以后,域进行了重命名,由于用户已被删除,因此无法将其 SID 添加到 SID 历史记录中,无论如何,其范围都是未知的。


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

icacls <folder> /setowner Administrators /t /c
icacls <folder> /reset /t /c
Run Code Online (Sandbox Code Playgroud)

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

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

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

现在,我可以重新开始,而无需恢复 DACL 或所有者 - 但随后,原始的非僵尸作者将不得不被遗忘。(备份软件与此无关)。

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


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

问题是,takeown /r它是一个生硬的工具,并且只拥有所有文件和文件夹的所有权。我可以直接从磁带恢复文件,而无需恢复其原始 ACL 和所有者。目标是通过重置 ACL 保留原始文件所有权(尽可能)。

对于更具选择性的内容,我将输出重定向 …

command-line windows-server file-permissions

9
推荐指数
1
解决办法
1745
查看次数