7

При экспериментировании с FileSystemWatcher я обнаружил, что он каким-то образом превосходит разрешения моей учетной записи пользователя к файлам и папкам и будет увеличивать события изменений с информацией о том, что изменилось в файлах и папках, t даже иметь доступ.FileSystemWatcher превосходит права файловой системы

У меня есть два вопроса о том, что:

1) Почему это происходит?
2) Это проблема в конфигурации AD? как мне это исправить?
3) Есть ли способ собрать эти файлы или даже создать их в FileSystemInfo, чтобы получить больше информации о файлах (а не только изменения, внесенные в них)?

Насколько я пробовал, только FileSystemWatcher иммунитет к ограничениям, я не могу запустить любую другую вещь над ним, вот список того, что я пробовал:

  • File.Exists
  • Directory.Exists
  • FileInfo экземпляр на найденных файлов
  • экземпляра
  • DirectoryInfo на найденных файлов
  • File.Copy
  • File.Delete

Update: Пробовал решение Helge, в с Somethin похоже на то, что он мотивационные, а не через Windows API,, но через командную строку:

ROBOCOPY/B \ MyServer \ папке C: \ somefolder

Лучшее название команды когда-либо.

Вы можете проверить с помощью robocopy, что/B означает «резервный режим», и это то, что предположил helge, что послужило бы причиной для этой безопасности.

Я попробую что-нибудь, я хочу узнать, что именно заставляет FileSystemWatcher просматривать папки, у меня нет разрешения на открытие. Зная, почему, я хочу узнать как заблокировать FileSystemWatcher, так и как собрать найденные файлы.

Я бы сделал опрос, если бы был с моей личной учетной записью. Пожалуйста, может кто-нибудь мне помочь? Я напишу сообщение в блоге об этом решении, среди прочего, которое может помочь кому-либо с такими же сомнениями в будущем.

+0

Права на файловую систему не имеют ничего общего с Active Directory. Они являются функцией только локальной системы. –

+2

@Helge Я не согласен. Если я откажу в разрешении папки для группы или пользователя, я не хочу, чтобы они могли видеть все, что я делаю в этой папке. Для меня это дыра, ошибка, и она должна быть исправлена. – DevexPP

+0

Но принудительное применение в локальной системе не имеет ничего общего с Active Directory. Является ли машина присоединенной к домену или нет, вероятно, не имеет отношения к этой проблеме. –

ответ

4

В соответствии с 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.

+0

Вы говорите, что FileSystemWatcher не будет работать под ограниченными учетными записями пользователей? –

+0

Не знаю. Но я уверен, что если он предоставит вам информацию о файлах, у вас нет разрешения на просмотр, тогда требуется привилегия резервного копирования. Возможно, он использует привилегию только в том случае, если он доступен. –

+0

Получил. Я буду проверять его более подробно и сообщать все, что я узнаю здесь! – Marcelo

Смежные вопросы