拒绝访问备份/查看 Windows NTFS 分区上的文件。如何不破​​坏性地修复权限?

拒绝访问备份/查看 Windows NTFS 分区上的文件。如何不破​​坏性地修复权限?

操作系统是2000/XP/Vista/7。其实应该都一样。

我正在尝试查看文件或对来自不同 Windows 安装的硬盘进行完整备份。问题是某些属于非特权用户的文件夹或愚蠢安装程序留下的文件缺少 SYSTEM 或 Administrators = 完全控制(或至少读取)权限。

现在我知道有很多关于“取得所有权”然后选择“替换子容器和对象的所有者”的答案。然后 Windows 会询问您是否要授予自己完全控制权限,因为作为所有者只允许您查看和更改权限,但不能直接授予访问权限,因此您仍然必须授予自己访问权限。问题是这种方法会更改所有内容的所有者,甚至是用户的文件。虽然这种情况可能很少见,但这会导致这样一种情况:没有自己对其文件的完全控制权并且依赖所有权来更改权限的用户无法再更改其文件的权限。这就是为什么这种方法可能会破坏正在备份的系统。

编辑:Windows“取得所有权”方法的另一个问题是,至少在 XP 上,当对象缺乏读取权限时,它只授予完全控制权限。如果您有读取权限,它就会保留它。当将文件夹复制到备份 NTFS 分区时,权限将被设置为只读访问权限,然后子文件夹和文件将无法写入。

我正在寻找一个实用程序,它可以将管理员 = 完全控制(或读取或修改,如果请求)添加到系统上所有缺少权限的文件。通常,几乎所有文件都有它,因为权限是继承的。除非绝对有必要添加此权限,否则实用程序不应更改文件的所有权。编辑:更好的方法是在所有不继承权限的对象上设置备份操作员 = 完全控制。Windows 上的某些文件没有管理员的写访问权限,以防止发生意外,最好保持这种状态。

如果可以在不改变所有权的情况下添加权限,那就太好了,但显然即使是备份操作员组和系统帐户也无法访问缺乏适当权限的文件,而且我认为这些帐户在授予所有权之前也不能更改权限。

编辑:到目前为止查看文件的解决方案:只需取得所有权,或按照备份说明取得备份的所有权并使用它。更改文件和目录的所有者不会造成任何损害,除非用户删除了自己的权限,这种情况很少见。

使用 Microsoft 工具进行备份:xcopy 不使用备份操作员权限,而 robocopy 可执行所有操作,包括长路径名,但不支持除 /XJ 之外的 JUNCTIONS 以忽略它们。但这两种工具可以一起使用。Vista 及更高版本使用 JUNCTIONS 将“Documents and Settings”等目录重定向到新文件夹名称。某些程序(如 2000/XP 上的 Java)可能会创建 JUNCTIONS,但在备份中保留它并非总是必要的。Vista 之前的用户需要安装 Windows 资源工具包才能获得 robocopy 和 linkd。您需要成为备份操作员组的成员才能使用 robocopy 的 /b 标志并绕过权限。

步骤 1:复制所有 JUNCTIONS。此示例中使用的是 XP xcopy。Vista xcopy 的行为可能已发生改变,因为它确实有一个复制链接选项。请注意,Vista 上的“\Users\All Users”文件夹是 LINK 而不是 JUNCTION,并且只有 Vista 及更高版本的 xcopy 才有复制链接的选项。此命令将复制所有目录和 JUNCTIONS,但不复制文件。复制每个 JUNCTION 后,它会生成“访问被拒绝”错误,但只要使用 /O,它就会起作用。

xcopy e:\ d:\e_drive_backup\ /T /E /H /K /O /X /C

第 2 步:确保已复制 JUNCTIONS。linkd 应该会告诉您 Documents and Settings 指向 C:\Users。dir /a 会将它们显示为 JUNCTION。

linkd "d:\e_drive_backup\Documents and Settings"

步骤 3:现在所有 JUNCTIONS 都已复制,是时候使用 robocopy 了(如果需要,从开始菜单中的资源工具包启动命令提示符)。

robocopy e:\ d:\e_drive_backup\ /E /B /COPYALL /XJ

其他方法:我读到 FastCopyhttps://ipmsg.org/tools/fastcopy_beta.html.en可以用,不过我还没试过。

答案1

尝试更改驱动器的权限来“备份”内容确实非常麻烦。

Windows 已经为我们提供了一种机制,无论权限如何,都可以备份文件。大多数实际备份应用程序都使用它。它被称为备份操作员权限。仅仅成为备份操作员组的成员并不会突然让您能够复制和粘贴文件而不管权限如何。它需要通过 Windows API 发出特殊请求来指示该操作是为了备份/恢复目的。

我建议你不要尝试更改权限,因为这是完全没有必要的。使用真正用于备份文件的应用程序。

在最基本的层面上,你可以简单地使用复制使用/b参数。确保从管理命令提示符运行 robocopy。添加参数/copyall或其他相关选项实际上会保留文件属性,包括复制时的所有权和权限。保留文件属性是任何备份应用程序的关键功能。

相关内容