【问题标题】:FileSystemWatcher surpassing file system permissionsFileSystemWatcher 超越文件系统权限
【发布时间】:2011-01-07 12:11:43
【问题描述】:

在尝试使用 FileSystemWatcher 时,我发现它以某种方式超出了我的用户帐户对文件和文件夹的权限,并且会引发更改事件,其中包含您甚至无权访问的文件和文件夹中的更改信息.

对此我有两个问题:

1) 为什么会这样?
2) 这是 AD 配置中的问题吗?我该如何解决?
3)有没有办法收集这些文件,甚至创建它们的 FileSystemInfo 以获得有关文件的更多信息(不仅仅是对它们所做的更改)?

据我尝试,只有 FileSystemWatcher 不受限制,我无法在它上面运行任何其他东西,这是我尝试过的列表:

  • 文件.存在
  • Directory.Exists
  • 找到的文件上的 FileInfo 实例
  • 找到的文件上的 DirectoryInfo 实例
  • 文件.复制
  • 文件.删除

更新:尝试了 helge 的解决方案,类似于他所建议的,不是通过 windows 的 api,而是通过命令提示符:

robocopy /B \myserver\folder c:\somefolder

有史以来最好的命令名称。

您可以通过 robocopy 检查 /B 代表“备份模式”,这是 helge 所建议的,这将是导致此安全性超越的原因。

我会尝试任何方法,我想找出导致 FileSystemWatcher 能够监视我无权打开的文件夹的确切原因。知道为什么,我想学习如何阻止 FileSystemWatcher,以及如何收集找到的文件。

如果我使用个人帐户,我会进行调查。请问,有人可以帮我吗?我将写一篇关于解决方案的博客文章,以及其他可能对未来有同样疑问的人有所帮助的内容。

【问题讨论】:

  • 文件系统权限与 Active Directory 无关。它们只是本地系统的功能。
  • @Helge 我不同意。如果我拒绝某个组或用户的文件夹权限,我不希望他们能够以任何方式看到我在该文件夹上所做的任何事情。对我来说,这是一个漏洞,一个错误,应该修复。
  • 但是本地系统上的权限强制执行与 Active Directory 无关。机器是否加入域可能与此问题无关。

标签: c# visual-studio security active-directory filesystemwatcher


【解决方案1】:

根据this answer on SO,FileSystemWatcher 基于API 函数ReadDirectoryChangesW。如果这是真的,它解释了你目睹的行为 - 以及为什么这不是安全漏洞。

由于documented on MSDN ReadDirectoryChangesW 需要权限 SeBackupPrivilege(由参数 FILE_FLAG_BACKUP_SEMANTICS 向 CreateFile 请求)。如果在该模式下打开文件,则返回的句柄将授予对该文件的完全访问权限,从而绕过访问检查。此功能专为backup programs 设计,他们需要能够读取磁盘上的所有内容而无需考虑权限。

这不是一个安全漏洞,因为默认情况下,此操作所需的权限SeBackupPrivilege 仅授予管理员。管理员,实际上是任何对机器有物理访问权限的人,总是能够控制和读取每个文件 - 除非它是加密的。

关于备份模式下可以使用哪些函数来访问文件:至少有BackupRead可以读取。使用 FindFirstFile/FindNextFile 可以轻松实现枚举。当然,这需要真正的 Windows API,而不是残缺的 .NET 文件系统函数。

【讨论】:

  • 你是说 FileSystemWatcher 不能在受限用户帐户下工作?
  • 我不知道。但我可以肯定的是,如果它为您提供有关您无权查看的文件的信息,则需要备份权限。也许它仅在可用时才使用该特权。
  • 知道了。我将对其进行更彻底的测试并报告我在这里发现的任何内容!
  • 在 Windows 命令提示符下:robocopy /B \\myserver\folder 不起作用。即使在我的 FileSystemWatcher 中弹出的文件夹中,也可以直接尝试,或者尝试使用子文件夹复制父级。检查和 /B 是真正的备份。还有一个元素,不仅仅是备份模式。
猜你喜欢
  • 2014-08-28
  • 2023-03-16
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2019-02-23
  • 1970-01-01
相关资源
最近更新 更多