Кто создал папку (файл) в Windows?

В статье мы покажем, как узнать имя пользователя, создавшего папку или файл в локальной папке или в общей сетевой шаре. Можно определились пользователя, который создал файл/папку, по владельцу объекта или через события аудита файловой системы.

Просмотр владельца папки (файла)

При создании файла или папки, пользователь создавший этот объект на файловой системе NTFS автоматически назначается его владельцем. Это позволяет создателю объекта управлять правами доступа к созданному файлу/папке.

Таким образом, чтобы узнать кто создал файл или папку, нужно открыть его свойства в проводнике -> вкладка Security -> кнопка Advanced. Владелец объекта отображается вверху формы расширенных свойств безопасности.

владельцем папки назначается создавший ее пользователь

Можно вывести владельца файла или папки из командной строки. Например, вывести информацию о владельцах всех вложенных объектах в папке (можно указать как локальный, так и UNC путь к сетевой папке):

dir \\s-fs01\Docs /q

командная строка вывести владельцев файлов и папок

Также владельца папки и права доступа можно получить с помощью встроенного PowerShell командлета Get-Acl:

(Get-Acl c:\Docs\simple2).Owner

Get-Acl получить owner

Отслеживаем создание файлов/папок в событиях аудита Windows

Администратор через групповые политики может включить аудит событий доступа к объектам в определенных каталогах файловой системы. Благодаря этому Windows при создании файлов или папок в отслеживаемой директории будет автоматически записывать события в журнал Event Viewer.

Сначала нужно включить аудит событий доступа к объектам файловой системы на компьютере, где находится папка

  1. Откройте редактор локальной GPO ( gpedit.msc )
  2. Перейдите в раздел Computer Configuration -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> System Audit Policies -> Object Access
  3. Откройте параметр Audit File System, включите его со сбором только успешных событий доступа (Success) Аудит доступа к файлам и папкам GPO
  4. Примените настройки GPO, выполнив: gpupdate /force
Включить аудит событий доступа к файловой системе можно также с помощью команды:

AuditPol.exe /set /subcategory:"File System" /success:enable

Подробнее о настройке политик аудита доступа к файлами и папкам в Windows.

Затем нужно настроить параметры аудита в свойствах папки, создание объектов в которой вы хотите отслеживать.

  1. Откройте свойства папки и перейдите на вкладку Security. Нажмите кнопку Advanced.
  2. Перейдите на вкладку Auditing
  3. Нажмите кнопку Add и укажите имя пользователя или группы (Select a principal), чьи действия вы хотите логгировать. Для аудита доступа любых пользователей нужно указать тут Users или Everyone.
  4. В поле Applies to укажите что нужно применять аудит для папки, файлов, вложенных объектов (This folder, subfolders and files);
  5. Переключитесь в режим расширенных прав доступа, нажав Show advanced permissions
  6. В настройках аудита отметьте опции Create files/write data и Create folders/append data аудит создания папок и файлов
  7. Сохраните настройки аудита.

Теперь, когда пользователь создаст или переместит в этот каталог новый файл или папку, в журнале событий Event Viewer в разделе Security появится событие с Event ID 4663:

An attempt was made to access an object, Accesses: WriteData (or AddFile)

В описании события видно, имя папки или файла, который был создан, а также имя создавшего пользователя.

eventid 4663 получаем пользователя, создавшего файл или папку

Если нужно хранить такие журналы события длительное время, нужно увеличить максимальный размер лога Security в Event Viewer.

Также можно выполнять поиск событий с интересующими вас файлами или папками с помощью встроенного поиска Event Viewer. Однако такой поиск по событиям выполняется очень медленно, и используется крайне редко.

поиск по имени файла в событиях аудита

Намного проще найти события создания/модификации файлов или папок и вывести имя пользователя с помощью PowerShell командлета Get-WinEvent:

$filename='*report2025.txt*'
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4663} |
Where-Object { $_.Properties[6].Value -like $filename } |
Select-Object TimeCreated, @{Name='AccountName';Expression={$_.Properties[1].Value}}, @{Name='ObjectName';Expression={$_.Properties[6].Value}}

Get-WinEvent поиск событий создания файлов и директорий


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)