Как узнать кто открыл файл по сети
Перейти к содержимому

Как узнать кто открыл файл по сети

  • автор:

Как узнать сетевого пользователя открывшего файл?

Есть Windows Server 2003 используемый в качестве файлового хранилища в локальной сети. На сервере расшарены папки с файлами. Через команду net file можно узнать какие файлы открыты удаленно, но как узнать кто конкретно открыл/запустил файл и заблокировал его или с какого ip-адреса или машины? Т.к. данная команда выдает таблицу, где все пользователи как Гости. Есть еще команда net session отображающая какие конкретно ip-адресса удаленно открыли файлы и их количество, но не отображает какие именно файлы открыты. То же самое можно увидеть через «Управление компьютером» в разделе «Служебные программы/Общие папки/Открытые файлы(Сеансы)» Есть ли способ или сторонняя программа позволяющая мониторить связку ip-адрес(имя локального компьютера) и открытый файл?

  • Вопрос задан более трёх лет назад
  • 7245 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 1

Есть, но не про ваш случай.
В вашем случае ресурс ( принтер, файл, директория ) открывается именно пользователем, которому разрешено (или нет =) работать с ресурсом.
В более современных ОС семейства Windows Server вы можете настроить логирование ( какой пользователь обратился к ресурсу успешно и с какого адреса ), но в 2003, ЕМНИП, такого еще не было.

Ответ написан более трёх лет назад
bahus162 @bahus162 Автор вопроса

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

Ваш ответ на вопрос

Войдите, чтобы написать ответ

windows-server

  • Windows Server
  • +2 ещё

Как настроить SSH в Windows Server 2019 если ключ ssh-rsa уже есть?

  • 1 подписчик
  • 5 часов назад
  • 23 просмотра

Как найти и закрыть открытые файлы в сетевой папке на сервере Windows?

date

06.12.2023

user

itpro

directory

PowerShell, Windows 10, Windows 11, Windows Server 2019

comments

комментариев 60

Администратор файлового сервера Windows может вывести список открытых файлов в общей сетевой папке и принудительно закрыть заблокированные файлы, открытые пользователями в монопольном режиме. Если пользователь открыт файл в общей сетевой SMB папке на сервере на чтение и запись и забыл его закрыть (ушел домой, в отпуск), другие пользователи не смогут внести изменения в файл.

В этой статье мы рассмотрим, как получить список открытых файлов на файловом сервере Windows и пользователей, которые их используют, а также способы сброса файловых сессий для разблокировки открытых файлов.

Вывод списка открытых файлов в сетевой папке Windows

Список открытых по сети файлов в Windows можно получить с помощью графической консоли Computer Management (Управление компьютером).

Открыты файлы на файловом сервере Windows

  1. Откройте консоль compmgmt.msc и перейдите в раздел System Tools ->Shared Folders ->Open files (Служебные программы -> Общие папки -> Открыты файлы);
  2. В правой части окна отображается список открытых файлов. Здесь указаны локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Также вы можете вывести список открытых на сервере файлов из командной строки:

Openfiles /Query /fo csv

Команда возвращает номер сессии, имя пользователя, количество блокировок и полный путь к файлу.

Openfiles /Query

Cо списком открытых файлов на сервере удобнее работать с помощью PowerShell командлета Get-SmbOpenFile:

В выводе команда содержится имя пользователя, имя (IP адрес) удаленного компьютера, с которого открыт файл), имя файла и ID файловой сессии.

poweshell вывод список пользователей, которые открыли файлы в сетевой папке windows

Кто открыл файл в общей сетевой папке на сервере Windows?

Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:

Openfiles /Query /s mskfs01 /fo csv | find /i «cons.adm»

Ключ /i используется, чтобы выполнялся поиск без учета регистра в имени файла.

Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:

Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «xlsx»

С помощью PowerShell также можно получить информацию о пользователе, который открыл файл. Например:

Вывести все открытые по сети exe файлы:

Найти открытые файлы по части имени:

Вывести все файлы, открытые определенным пользователем:

Get-SMBOpenFile –ClientUserName «corp\aaivanov» |select ClientComputerName,Path

Найти файлы, которые открыли с указанного компьютера:

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

Принудительно закрыть открытый файл на сервере Windows

Можно закрыть открытый файл через консоль Computer Management. Найдите файл в списке секции Open Files, выберите в контекстном меню пункт “Close Open File”.

Закрыть открытые файлы в сетевой папке

Если на сервере по сети открыты сотни файлов, то найти нужный файл в графической консоли довольно сложно. Лучше использовать инструменты командной строки.

Закрыть файл можно, указав ID его SMB сессии. Получить ID сессии файла:

Openfiles /Query /fo csv | find /i «report2023.xlsx»

команда openfiles найти кем открыт файл

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:

Openfiles /Disconnect /ID 3489847304

openfiles disconnect - закрыть открытый файл на сервере

SUCCESS: The connection to the open file "D:\path\REPORT2023.XLSX" has been terminated.

Вы разблокировали открытый файл и теперь его могут открыть другие пользователи.

Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corp\aivanova /id *

Можно закрыть открытый файл по ID сессии с помощью PowerShell командлета Close-SmbOpenFile.

Close-SmbOpenFile — SessionId 3489847304

Найти и закрыть открытый файл одной командой:

Get-SmbOpenFile | where | Close-SmbOpenFile

powershell закрыть открытый файл на сервере

Для подтверждения сброса сессии и освобождения отрытого файла нажмите Y -> Enter .

Чтобы закрыть файл без предупреждения, добавьте параметр -Force в последнюю команду.

С помощью Out-GridView можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратору нужно с помощью фильтров в таблице Out-GridView найти и выделить нужные файлы, а затем нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose

Get-SmbOpenFile вместе с out-gridview - powershell скрипт с графическим интерефейсом по выбору и принудительному закрыттию заблокированных (открытых) файлов в windows

Принудительное закрытие открытого файла на файловом сервере, вызывает потерю несохраненных пользователем данных. Поэтому команды openfiles /disconnect и Close-SMBOpenFile нужно использовать с осторожностью.

Как удаленно закрыть открытые по сети файлы с помощью PowerShell?

Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:

$sessn = New-CIMSession –Computername mskfs01

Также вы можете подключаться к удаленному серверам для запуска команд через командлеты PSRemoting: Enter-PSSession или Invoke-Command .

Следующая команда найдет сессию для открытого файла *pubs.docx и завершит ее.

Get-SMBOpenFile -CIMSession $sessn | where | Close-SMBOpenFile -CIMSession $sessn

Подтвердите закрытие файла, нажав Y . В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

Get-SMBOpenFile - удаленное управление открытых файлов

С помощью PowerShell вы можете закрыть и осведомить на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:

Get-SMBOpenFile -CIMSession $sessn | where |Close-SMBOpenFile -CIMSession $sessn

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

Как узнать кто открыл файл по сети

В Поисках Истины

Сообщения: 802
Благодарности: 135

Конфигурация компьютера
Процессор: Intel Core 2 Duo E6400 2.13GHz
Материнская плата: EliteGroup P965T-A
Память: Kingston orig PC5300 3Gb (1x2Gb,1x1Gb)
HDD: Seagate Barracuda ST3250823A 250Gb + Seagate Barracuda ST3250620AS 250Gb
Видеокарта: Asus EN GeForce 7600GT 256Mb
Звук: C-Media CMI8738
Блок питания: Powerman (In Win) 430W
CD/DVD: Nec DVD-RW ND-4571A
Монитор: Samsung SyncMaster 2443nw 24`
Ноутбук/нетбук: Asus N61DA
ОС: Windows 8 x64

Здравствуйте. Есть сеть, домене. Где — то расшарена папка, к которой есть полный доступ всем. Сейчас требуется заменить файл, но невозможно — написано что файл открыт кем — то другим. Как можно узнать хоть какую — нибудь информацию об «открывшем» файл?

Сообщения: 26377
Благодарности: 4434

Цитата LilLoco:

Как можно узнать хоть какую — нибудь информацию об «открывшем» файл?

На компьютере, где шара: Пуск -> Выплнить -> fsmgmt.msc

Или сделать это на любом компьютере, а потом пункт меню Действие -> Подключиться к другому.

——-
— Пал Андреич, Вы шпион?
— Видишь ли, Юра.

Сообщение оказалось полезным? Поблагодарите автора, нажав ссылку Полезное сообщение чуть ниже.

Sysadminium

Из этой статьи вы узнаете, как найти того, кто открыл файл в общей (сетевой) папке Windows с помощью оснастки mmc.exe.

Оглавление скрыть

Введение

Часто системные администраторы создают общие папки на Windows серверах, или компьютерах пользователей. Иногда это делают сами пользователи. Но иногда, при работе пользователей, может произойти следующая ситуация, когда один из пользователей не может открыть файл для его редактирования, так как уже другой пользователь редактирует этот файл. При этом пользователю показывается следующее предупреждение:

Как видно на скриншоте выше, пользователю даётся выбор:

  • Открыть файл только для чтения. Файл открывается, но редактировать его не получится.
  • Создать локальную копию и внести изменения позже. В этом случае есть риск потерять данные, которые вводит другой пользователь.
  • Уведомить, когда исходная копия станет доступной. При этом файл открывается только для чтения, но как только другой пользователь закроет файл, то этот пользователь получит уведомление, о том что можно начинать редактировать файл.

Что-бы найти того, кто открыл этот файл, и редактирует его, мы можем использовать консоль оснасток mmc.exe на вашей Windows системе. Если вы не знаете что такое mmc — то вот сылка на wikipedia.

Решение проблемы

И так, открываем консоль оснасток mmc.exe. Её вы можете найти в меню Пуск. А затем добавляем туда новую оснастку с помощью меню Консоль / Добавить или удалить оснастку:

Выбираем оснастку «Общие папки» и добавляем её в консоль:

Будем смотреть всё на локальном компьютере, или вы можете подключиться к другому компьютеру по сети:

И нажимаем на кнопку «Готово«, а затем на кнопку «ОК«.

Кстати, с помощью этой оснастки вы можете подключиться к серверу samba на linux и посмотреть открытые файлы там. Или можете использовать утилиту на Linux — smbstatus.

В добавленной оснастке переходим в меню «Открытые файлы«, и там находим нужный файл. Здесь же видим кто его открыл. А для того чтобы закрыть открытый файл нужно счелкнуть по нему правой кнопкой мышки и выбрать пункт ‘Закрыть открытый файл‘.

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

Итог

Теперь вы знаете, как определить того, кто открыл файл на вашем компьютере или сервере Windows используя общий доступ (протокол cifs).

Другие, мои, статьи по windows доступны здесь.

Кто открыл файл в общей папке Windows

Имя статьи
Кто открыл файл в общей папке Windows

Из этой статьи вы узнаете, как найти того, кто открыл файл в общей (сетевой) папке Windows с помощью оснастки mmc.exe

Добавить комментарий

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