Windows 备份文件而不必更改文件的安全性

Windows 备份文件而不必更改文件的安全性,windows,security,backup,ntfs,Windows,Security,Backup,Ntfs,我正在开发基于MS Windows的备份解决方案。对于NTFS文件系统,我们使用BackupRead和BackupWrite API来实现这一点,而且基本上是可行的。也有例外。我们知道要调整令牌权限以获得SE_备份\ u名称、SE_恢复\ u名称和SE_更改\ u通知\ u名称权限。我们知道在打开文件时使用ACCESS\u SYSTEM\u SECURITY、BACKUP\u语义和POSIX\u语义。我们知道在文件上添加WRITE_DAC和WRITE_OWNER以启用BackupWrite。这一

我正在开发基于MS Windows的备份解决方案。对于NTFS文件系统,我们使用BackupRead和BackupWrite API来实现这一点,而且基本上是可行的。也有例外。我们知道要调整令牌权限以获得SE_备份\ u名称、SE_恢复\ u名称和SE_更改\ u通知\ u名称权限。我们知道在打开文件时使用ACCESS\u SYSTEM\u SECURITY、BACKUP\u语义和POSIX\u语义。我们知道在文件上添加WRITE_DAC和WRITE_OWNER以启用BackupWrite。这一切我们都经历过了。大多数情况下,我们都很好

我们偶尔会遇到一些文件,这些文件在其安全描述符中对每个人都有明确的拒绝,当我们试图打开这些文件进行备份时,会被这些文件绊倒。特别是,在使用CreateFile打开文件失败后,我们在GetLastError上获得了Access Denied 5作为错误代码。我猜显式拒绝在administrators组允许之前得到评估

作为一名管理员,我们知道我们可以夺走所有权,至少是暂时的。这似乎令人发指,我正在四处寻找替代方案。我认为我们不应该为了备份而修改文件的安全性。更一般地说,我认为我们应该通过获得SE_BACKUP_NAME特权并在CreateFile调用中使用BackupSemantics来绕过所有与DACL相关的内容……但这似乎并不适用于全局

我刚刚阅读了关于AdjustTokenGroups的文章,并准备研究是否可能清除Everyone组的SE_GROUP_ENABLED属性。这似乎也是错误的。我忍不住觉得我们走错了路,所以我把这个问题抛出去征求意见。我们是否忽略了更简单的事情


我们面临的直接问题是XP到Vista时间段引入的连接。我们正在尝试只备份交叉点…因为我们已经成功地备份了交叉点目标处的内容。我们正在添加FILE\u FLAG\u OPEN\u repasse\u POINT来完成读取。

我猜含糊其辞地说,问题是我们无法备份磁盘上的某些实体。然而,我做了一个错误的假设。问题不是在CreateFile调用中打开目录…而是在随后的BackupRead调用中。交叉点显然不能很好地与后盾配合


但在计算出我可以打开交叉口之后,我有了记录交叉口信息的其他方法。存在一个DeviceIOControl调用,该调用将从连接点获取重分析数据。提供了一个很好的示例。

是-谢谢。我们知道VSS…我们的产品是一个管理套件的一部分,其中包括按需将敏感信息备份到一个安全的中央存储区…我可能不应该简单地将其描述为一个备份解决方案…但为了简单起见,我们使用的正是这种机器。那么问题是什么?你的问题中没有提到这一点。