Участник форума
Зарегистрирован: 23.08.2007
Пользователь #: 60,096
Сообщения: 125
Источник
Аудит доступа к файлам и папкам в Windows Server 2008 R2
Для ведения аудита доступа к файлам и папкам в Windows Server 2008 R2, необходимо включить функцию аудита, а также указать папки и файлы, доступ к которым необходимо фиксировать. После настройки аудита, в журнале сервера будет содержаться информация о доступе и других событиях на выбранные файлы и папки. Стоит заметить, что аудит доступа к файлам и папкам может вестись только на томах с файловой системой NTFS.
Включаем аудит на объекты файловой системы в Windows Server 2008 R2
Аудит доступа на файлы и папки включается и отключается при помощи групповых политик: доменный политик для домена Active Directory либо локальных политик безопасности для отдельно стоящих серверов. Чтобы включить аудит на отдельном сервере, необходимо открыть консоль управления локальный политик Start -> All Programs -> Administrative Tools -> Local Security Policy. В консоли локальной политики нужно развернуть дерево локальный политик (Local Policies) и выбрать элемент Audit Policy.
В правой панели нужно выбрать элемент Audit Object Access и в появившемся окне указать какие типы событий доступа к файлам и папкам нужно фиксировать (успешный/ неудачный доступ):
После выбора необходимой настройки нужно нажать OK.
Выбор файлов и папок, доступ к которым будет фиксироваться
После того, как активирован аудит доступа к файлам и папкам, необходимо выбрать конкретные объекты файловой системы, аудит доступа к которым будет вестись. Так же как и разрешения NTFS, настройки аудита по-умолчанию наследуются на все дочерние объекты (если не настроено иначе). Точно так же, как при назначении прав доступа на файлы и папки, наследование настроек аудита может быть включено как для всех, так и только для выбранных объектов.
Чтобы настроить аудит для конкретной папки/файла, необходимо щелкнуть по нему правой кнопкой мыши и выбрать пункт Свойства (Properties). В окне свойств нужно перейти на вкладку Безопасность (Security) и нажать кнопку Advanced. В окне расширенных настроек безопасности (Advanced Security Settings) перейдем на вкладку Аудит (Auditing). Настройка аудита, естественно, требует прав администратора. На данном этапе в окне аудита будет отображен список пользователей и групп, для которых включен аудит на данный ресурс:
Чтобы добавить пользователей или группы, доступ которых к данному объекту будет фиксироваться, необходимо нажать кнопку Add… и указать имена этих пользователей/групп (либо указать Everyone – для аудита доступа всех пользователей):
Далее нужно указать конкретные настройки аудита (такие события, как доступ, запись, удаление, создание файлов и папок и т.д.). После чего нажимаем OK.
Сразу после применения данных настроек в системном журнале Security (найти его можно в оснастке Computer Management -> Events Viewer), при каждом доступе к объектам, для которых включен аудит, будут появляться соответствующие записи.
Альтернативно события можно просмотреть и отфильтровать с помощью командлета PowerShell — Get-EventLog Например, чтобы вывести все события с eventid 4660, выполним комманду:
UPD от 06.08.2012 (Благодарим комментатора Roman).
В Windows 2008/Windows 7 для управления аудитом появилась специальная утилита auditpol. Полный список типов объектов, на который можно включить аудит можно увидеть при помощи команды:
Как вы видите эти объекты разделены на 9 категорий:
- System
- Logon/Logoff
- Object Access
- Privilege Use
- Detailed Tracking
- Policy Change
- Account Management
- DS Access
- Account Logon
И каждая из них, соответственно, делиться на подкатегории. Например, категория аудита Object Access включает в себя подкатегорию File System и чтобы включить аудит для объектов файловой системы на компьютере выполним команду:
Отключается он соответственно командой:
Т.е. если отключить аудит ненужных подкатегорий, можно существенно сократить объем журнала и количества ненужных событий.
После того, как активирован аудит доступа к файлам и папкам, нужно указать конкретные объекты которые будем контролировать (в свойствах файлов и папок). Имейте в виду, что по-умолчанию настройки аудита наследуются на все дочерние объекты (если не указано иное ).
Все собранные события можно сохранять во внешнюю БД для ведения истории. Пример реализации системы: Простая система аудита удаления файлов и папок для Windows Server.
Источник
Как определить с какого компьютера в сети открыт файл на Windows Server 2008 R2?
Определение с какого компьютера в сети был открыт файл.
Привет всем, программисты кто-нибудь в курсе можно ли сделать следующее. Несколько компов в.
Определить, от какого пользователя открыт файл
День добрый! Есть задача определить кто открыл файл дальше взять его логин и отправить ввиде.
Настройка сети и интернет на Windows server 2008
Добрый день. Есть задача — один компьютер с windows server 2008 и два с windows 7 professional.
Групповая политика рабочего компьютера, присоединенного к домену Windows Server 2008 R2
Доброго вечера. Имеется Server 2008 и XP, которые находятся в одном домене. С помощью оснастки.
бесполезно, если несколько заходят под учеткой «Гость»
Добавлено через 27 минут
Интересно, но то, что у вас гостевой доступ, разве не подразумевает, что вам по барабану кто открвыает файл?
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
TL-R480T+ в сети, в которой поднят домен на Windows Server 2008 R2
Добрый день! Небольшая локальная сеть , поднят домен на Windows Server 2008 R2. В сети есть.
Отключение доступа к сайту из глобальной сети. Windows server 2008
Здравствуйте. Нужен был ресурс для локальной сети и был поднят веб-сервер. Однако, к этому ресурсу.
Windows Server 2008 R2 синхронизация времени с сервером ntpd в локальной сети
Не работает синхронизация времени в WS 2008 R2. Настройки прилетают от dhcp-сервера на linux, на.
Синхронизация данных по сети организации штатными средствами Windows Server 2008 R2
Доброго всем дня или ночи, у кого как) В организации стоит задача автоматизировать получение.
Как определить открыт ли файл?
Нужна помощь. Некий макрос открывает нужные экселевские файлы. Как сделать проверку ‘Не открыт ли.
Как определить, открыт ли файл?
Вопрос по теме. За ранее все спасибо!
Источник
Adblock
detector
Содержание
- Как определить кто открыл файлы в сетевой папке и сбросить сессии пользователя в Windows Server
- 1 способ. Получаем список открытых файлов с помощью оснастки «Управление компьютером».
- 2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.
- Определяем кто открыл сетевой файл.
- Закрываем заблокированный сетевой файл.
- Аудит доступа к файлам и папкам в Windows Server 2008 R2
- Включаем аудит на объекты файловой системы в Windows Server 2008 R2
- Выбор файлов и папок, доступ к которым будет фиксироваться
- Управление открытыми файлами на файловом сервере Windows (SMB)
- Вывод списка открытых файлов в сетевой папке Windows
- Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles
- Как принудительно закрыть открытый файл в Windows?
- Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell
- Как удаленно закрыть открытые SMB файлы с помощью PowerShell?
- Как смотреть в Powershell открытые файлы по протоколу SMB и их закрывать
- Как фильтровать через Powershell файлы открытые по сети
- Как закрывать сессии открытых файлов в Powershell через Close-SmbOpenFile
- Выполнение Get-SmbOpenFile на другом сервере
- Get-SmbOpenFile для Windows Server 2008
- Видео
Как определить кто открыл файлы в сетевой папке и сбросить сессии пользователя в Windows Server
На общедоступном сетевом ресурсе могут возникать ошибки доступа к файлам. Причиной этому является некорректно завершенная сессия пользователя, ошибки в работе ПО или просто кто-то открыл файл и не закрывает его. В такой ситуации файл оказывается заблокированным и не доступен для работы другим пользователям.
Решить проблему доступа к файлу можно путем закрытия сеансов использующих этот файл. В этой статье я расскажу как определить кто открыл файл в сетевой папке и как закрыть это подключение.
Рассмотрим два способа:
1 способ. Получаем список открытых файлов с помощью оснастки «Управление компьютером».
Для получения списка открытых файлов на файловом сервере воспользуемся оснасткой консоли «Управление компьютером». Для запуска оснастки нажимаем сочетание клавиш «Win + R» и набираем название оснастки «compmgmt.msc».
В иерархии оснастки переходим /Управление компьютером/Служебные программы/Общие папки/Открытые файлы.
В правой части оснастки появится список открытых файлов. Здесь можно увидеть имя пользователя открывшего файл, количество блокировок и режим доступа к файлу.
Закрываем файл. Чтобы закрыть сетевой файл открытый другим пользователем находим его в списке и в контекстном меню выбираем пункт «Закрыть открытый файл».
2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.
Утилита Openfiles дает нам более широкие возможности по поиску и закрытию заблокированных файлов.
C помощью openfiles можно просмотреть список открытых файлов на сервере удаленно. Для этого открываем командную и запускаем утилиту с параметрами.
По-умолчанию список файлов показан в формате таблицы, но есть параметры позволяющие изменить формат вывода:
Если необходимо увидеть информацию о количестве блокировок файлов (#Locks) и в каком режиме открыт файл (чтение или запись), то можно воспользоваться параметром /v.
Определяем кто открыл сетевой файл.
Чтобы найти пользователя, который открыл и заблокировал нужный нам файл запускаем Openfiles с командой find.
в команде find указан параметр /i, чтобы поиск был регистронезависимым.
После того когда мы узнали имя пользо
Закрываем заблокированный сетевой файл.
Закрыть открытый файл можно по id сессии таким способом:
Закрыть все сетевые подключения к файлам и папкам, которые открыл пользователь BadUser:
Закрыть все файлы и директории открытые в режиме чтение/запись:
Закрыть все подключения к директории с именем «c:myshare»:
Чтобы сбросить все сессии на удаленном сервере FileServer, которые открыл пользователь domainbaduser, независимо от id сессии:
Источник
Аудит доступа к файлам и папкам в Windows Server 2008 R2
Для ведения аудита доступа к файлам и папкам в Windows Server 2008 R2, необходимо включить функцию аудита, а также указать папки и файлы, доступ к которым необходимо фиксировать. После настройки аудита, в журнале сервера будет содержаться информация о доступе и других событиях на выбранные файлы и папки. Стоит заметить, что аудит доступа к файлам и папкам может вестись только на томах с файловой системой NTFS.
Включаем аудит на объекты файловой системы в Windows Server 2008 R2
В правой панели нужно выбрать элемент Audit Object Access и в появившемся окне указать какие типы событий доступа к файлам и папкам нужно фиксировать (успешный/ неудачный доступ):
После выбора необходимой настройки нужно нажать OK.
Выбор файлов и папок, доступ к которым будет фиксироваться
После того, как активирован аудит доступа к файлам и папкам, необходимо выбрать конкретные объекты файловой системы, аудит доступа к которым будет вестись. Так же как и разрешения NTFS, настройки аудита по-умолчанию наследуются на все дочерние объекты (если не настроено иначе). Точно так же, как при назначении прав доступа на файлы и папки, наследование настроек аудита может быть включено как для всех, так и только для выбранных объектов.
Чтобы настроить аудит для конкретной папки/файла, необходимо щелкнуть по нему правой кнопкой мыши и выбрать пункт Свойства (Properties). В окне свойств нужно перейти на вкладку Безопасность (Security) и нажать кнопку Advanced. В окне расширенных настроек безопасности (Advanced Security Settings) перейдем на вкладку Аудит (Auditing). Настройка аудита, естественно, требует прав администратора. На данном этапе в окне аудита будет отображен список пользователей и групп, для которых включен аудит на данный ресурс:
Чтобы добавить пользователей или группы, доступ которых к данному объекту будет фиксироваться, необходимо нажать кнопку Add… и указать имена этих пользователей/групп (либо указать Everyone – для аудита доступа всех пользователей):
Далее нужно указать конкретные настройки аудита (такие события, как доступ, запись, удаление, создание файлов и папок и т.д.). После чего нажимаем OK.
Альтернативно события можно просмотреть и отфильтровать с помощью командлета PowerShell — Get-EventLog Например, чтобы вывести все события с eventid 4660, выполним комманду:
UPD от 06.08.2012 (Благодарим комментатора Roman).
В Windows 2008/Windows 7 для управления аудитом появилась специальная утилита auditpol. Полный список типов объектов, на который можно включить аудит можно увидеть при помощи команды:
Как вы видите эти объекты разделены на 9 категорий:
И каждая из них, соответственно, делиться на подкатегории. Например, категория аудита Object Access включает в себя подкатегорию File System и чтобы включить аудит для объектов файловой системы на компьютере выполним команду:
Отключается он соответственно командой:
Т.е. если отключить аудит ненужных подкатегорий, можно существенно сократить объем журнала и количества ненужных событий.
После того, как активирован аудит доступа к файлам и папкам, нужно указать конкретные объекты которые будем контролировать (в свойствах файлов и папок). Имейте в виду, что по-умолчанию настройки аудита наследуются на все дочерние объекты (если не указано иное ).
Все собранные события можно сохранять во внешнюю БД для ведения истории. Пример реализации системы: Простая система аудита удаления файлов и папок для Windows Server.
Источник
Управление открытыми файлами на файловом сервере Windows (SMB)
Если вы администрируете общие сетевые папки Windows, скорее всего вы периодически сталкиваетесь с просьбами пользователей принудительно закрыть файлы, открытые (заблокированные) в сетевых папках другими пользователями. Обычно это связано с некорректной работой программы, неправильном завершении сессии пользователя или ситуациях, когда пользователь открыл файл и забыл закрыть его (ушел домой, в отпуск и т.д.). Во всех этих случаях файл в сетевой папке оказывается заблокированным, и другие пользователи не могут вносить в него изменения.
В этой статье мы покажем, как получить список открытых файлов на файловом сервере Windows, узнать какие пользователи их используют, и способы сброса файловых сессий для разблокировки открытых файлов.
Вывод списка открытых файлов в сетевой папке Windows
Список открытых по сети файлов в Windows можно получить с помощью стандартной графической консоли Computer Management (Управление компьютером — compmgmt.msc ).
Этот же список открытых файлов можно получит с помощью встроенной консольной утилиты Openfiles. Например, с помощью следующей команды можно получить id сессии, имя пользователя и полный локальный путь к открытому файлу:
Openfiles /Query /fo csv |more
Вы можете вывести список открытых файлов на сервере удаленно. Например, чтобы вывести все открытые по сети файлы на сервере mskfs01, выполните:
Openfiles /Query /s mskfs01 /fo csv
Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles
Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:
Openfiles /Query /s mskfs01 /fo csv | find /i «cons.adm»
Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:
Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «xlsx»
Можно, конечно найти открытый файл и в графической консоли Computer Management, но это менее удобно (в консоли нет возможности поиска).
Как принудительно закрыть открытый файл в Windows?
Чтобы закрыть открытый файл, нужно найти его в списке файлов секции Open Files и в контекстном меню выбрать пункт “Close Open File”.
Если на файловом сервере сотни открытых файлов, найти их в консоли будет непросто. Удобнее воспользоваться утилитой Openfiles. Как мы уже говорили, она возвращает ID сессии открытого файла. Вы можете принудительно закрыть файл и сбросить подключение пользователя по ID SMB сессии. Сначала нужно определить ID сессии открытого файла:
Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «.xlsx»
Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:
Openfiles /Disconnect /s mskfs01 /ID 67109098
Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corpaivanova /id *
Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell
В версии PowerShell в Windows Server 2012/Windows 8 появились командлеты для управления сетевыми файлами и папками на SMB сервере. Эти командлеты можно использовать чтобы удаленно закрыть открытые по сети файлы.
Список открытых файлов можно получить с помощью командлета Get-SMBOpenFile. Чтобы закрыть файл (сбросить подключение), используется Close-SmbOpenFile.
Для вывода полного списка открытых файлов на сервере, выполните команду:
Команда возвращает ID файла, ID сессии и полное имя файла.
Можно вывести список открытых файлов с именами пользователей и компьютеров (IP адресами):
Можно вывести все файлы, открытые определенным пользователем:
Get-SMBOpenFile –ClientUserName «corpaaivanov» |select ClientComputerName,Path
или с определенного компьютера (сервера):
Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path
Можно вывести список открытых файлов по шаблону. Например, все открытые по сети exe файлы:
или файлы с определенным именем:
Но обычно удобнее закрыть файл по имени:
С помощью Out-GridView можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратор должен с помощью фильтров в таблице Out-GridView найти, выделить нужные файлы и нажать ОК. В результате выбранные файлы будут принудительно закрыты.
Как удаленно закрыть открытые SMB файлы с помощью PowerShell?
Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:
$sessn = New-CIMSession –Computername mskfs01
Следующая команда найдет SMB сессию для открытого файла *pubs.docx и завершит ее.
С помощью PowerShell вы можете закрыть и разблокировать на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:
Спасибо, поправил ошибку! Лишний символ.
Спасибо, полезный материал!
А как сделать наоборот? Отобразить список папок с открытым доступом для конкретного пользователя?
У Sysinternals есть утилитка AccessChk. Думаю с помощью нее проще всего получить список результирующих прав на каталоги для конкретного пользователя.
На вход подаем имя пользователя и имя папки. Запускаем на сервере. В результате получаем список обьектов и результирующие права доступа (R/Rw …).
accesschk corpvasyauser d:share
Попробуйте.
Добрый день. В чём может быт проблема в случае, когда файл принудительно закрытый через консоль не закрывается на удаленном сервере?
Кто-то использует этот файл. Возможно локально. Либо сразу после закрытия открывает… Идентфикатор сесии тот-же?
Файл точно не открывается, поскольку после закрытия через консоль не закрывается на удаленном сервере, проверил, подключившись под другим пользователем и открыв файл на сервере.
Я что-то запутался… Опишите проблему точнее, какой-то сумбур получился 🙂
Да, запутанно написал, извините. Файл находится на сервере A (файловый сервер), я захожу на сервер Б с правами пользователя и открывают файл лежащий на сервере А. Затем захожу на сервер А с правами администратора и закрываю файл открытый с правами обычного пользователя с сервера Б, используя консоль. Но файл не закрывается.
Михаил
А что за файл? Какая-то специфическая программа? Или обычный офисный документ?
Проверьте идентификатор сессии открытого файла. Он меняется, когда вы его отключали через консоль?
Да, идентификатор меняется. Ещё есть нюанс, должен ли файл закрываться у пользователя как приложение? Поскольку я не вижу новой сессии, до тех пора пользователь не произведет манипуляций с файлом. Например, сохранит документ. Т.е. я закрываю через консоль файл, он не закрывается у пользователя, но исчезает сессия в консоли. Пользователь пересохраняет открытый файл тем самым открывая новую сессию.
Тут все верно. Путь к файлу остался в приложении. Когда приложение сохраняет файл (через то же автосохранение), создается новая SMB сессия к файлу.
В вашем случае надо после отключения файла нужно пристрелить приложение на удаленном компьютере.
Скорее всего никак. У выполняющего команду должны быть права администратора роли File Server. Либо как вариант сделать задание в планировщике, которое запускается автоматом или по требованию и сохраняет в текстовый список открытых файлов. Нужным пользователям можно дать права на текстовый файл или запуск задания.
Здравствуйте. Есть шара на сервере и пользователи часто обращаются узнать кто открыл определенный файл на шаре. Как и чем сделать так чтобы юзер сам мог посмотреть кем открыт файл?
Без предоставления прав админа на сервере не знаю как это сделать.
Как вариант — поднять на этом же сервере IIS из одной страницы, которую формирует планировщик запуская раз в 5 минут команду выгрузки списка текущих открытых файлов в html.
Хотя бы так:
del /q c:inetpubsite1index.html
Openfiles /Query >> c:inetpubsite1index.html
Пользователи, если хотят понят кем открыт их любымый отчет, просто открывают этот сайт, ищут в списке свой файл и определяют злодей, который держит файл открытым на RW.
Вот прям процессы убиваются на компьютерах, где эти исполняемый файлы запушены с сетевой папке? Мне почему-то кажется, что так не получится.
По логике, если exe запустилось, она уже будет работать в памяти на компьютере, где запушено. Если ему понадобится обратится к exe файлу на шаре, он к нему сходит.
Может проще шару временно отключить на время обновления?
Здравствуйте, проясните такой вопрос: на файловом сервере 2012R2, пользователи работаю с файлами dwg(через AutoCAD). User1открывает файл с сервера и начинает в нем работать, если в это время User2 откроет этот файл то получит уведомление что файл можно открыть только для чтения. Но бывают случаи когда User2 открывает файл в котором точно работает User1 но не получает уведомления и получает права на редактирование файла. Чаще такое наблюдается когда User1 отходит на некоторое время от компьютера, обострилась ситуация когда натравили GPO «Включение заставки через 600с».
Доброго дня коллеги, подскажите как реализовать задачу?Как правильно настроить доступ доменному пользователю что бы он мог подключиться через PS и закрыть файлы?
Я бы посмотрел в сторону powershell just enough administration (правильный путь) или некого задания в планировщике, которое берет инфу о файлах, которые нужно закрыть из текстового файла (задания запускается из-под админа)
В общем, дочитал комментарии и увидел ответ.
Get-SmbOpenFile | where
Спасибо за статью. А кто-нибудь сталкивался с таким?
Пользователь работает с документами (pdf, word, excel) на сетевом диске (файловый сервер), закрывает их, а другой пытается удалить/перенести файл или папку (в которой были эти документы) и не может, т.к «этот файл открыт в другой программе» и т.д. При этом, на файловом сервере, я по открытым файлам общих папок вижу, что первый пользователь продолжает держать папку, в которой он работал с документами. Иногда помогает перезагрузка ПК (первого пользователя), а иногда папка сама себя отпускает. Я пытался разобраться с самим ПК пользователя, в частности с офисным софтом и самой Windows, но у меня много пользователей и у всех так или иначе возникает проблема с «заблокированными» папками. Может ли так быть, что групповая политика, что подключает диски файлового сервера пользователю, каким-то образом не давать отпускать папки, с которым он работал? Или есть какая-то настройка сброса сессии к папкам? Даже не знаю…
Нужно искать процесс на компьютере пользователя, которые держит открытой сетевую папку. Может быть это антивирус или какой-то сканер, а может и офисное по работает некорректно.
Спасибо за статью. А как посмотреть, кто открыл файлы на терминальном сервере?
(файловый сервер, с переходом на удаленку становится мало актуальным.. даже странно, что кто-то сейчас открывает файлы не в терминальной сесии )
Источник
Как смотреть в Powershell открытые файлы по протоколу SMB и их закрывать
Для просмотра в Powershell открытых файлов через SMB (открытых по сети) мы можем использовать командлет Get-SmbOpenFile. Командлет доступен с версии Windows Server 2012. Эта команда выведет папку, сессии и идентификаторы подключения:
Если мы захотим посмотреть детальную информацию по подключению нужно сделать следующее:
Или аналогично для сессий:
Навигация по посту
Как фильтровать через Powershell файлы открытые по сети
Мы можем получить данные только по определенному свойству. Т.е. это могут быть файлы открытые определенным пользователем, компьютером, с каким-то расширением и т.д. Для того что бы увидеть все свойства объекта нужно сделать следующее:
Меня могут не интересовать все компьютеры, а только файлы открытые с определенного адреса:
Таким образом я вывел все сессии, где свойство ClientComputerName заканчивается на 3.1.
Аналогично мы можем найти всех пользователей:
Если нам нужно найти, например, конкретный файл или расширение, то мы можем воспользоваться свойством Path или ShareRelativePath:
Таким образом я нашел все сессии, где открытый файл заканчивается на txt.
Как закрывать сессии открытых файлов в Powershell через Close-SmbOpenFile
Для закрытия сессий есть другой командлет. Мы можем закрыть существующую сессию так:
Среди других ключей, которые мы можем указывать как идентификатор для закрытия могут быть:
Частым сценарием может быть закрытие сессии где открыт определенный файл. Я бы это сделал так:
Выполнение Get-SmbOpenFile на другом сервере
Этот командлет поддерживает удаленное выполнение через сессию CIM. Для того что бы это сделать нужно написать следующее:
Если вы работаете в домене и являетесь администратором сервера, к которому пытаетесь подключиться, то у вас должны сработать команды:
Если у вас будут какие-то сложности, то стоит прочитать эту статью.
Get-SmbOpenFile для Windows Server 2008
На Windows Server 2008 этого командлета нет, но у нас есть другие способы для просмотра сессий и их закрытия. Так мы увидим все открытые файлы и папки:
Есть аналогичные команды для просмотра файлов и установленных сессий:
Можно посмотреть сессии на другом сервере. В моем случае я смотрю на сервере AD1:
Для закрытия файлов мы можем использовать:
Либо через утилиту Openfiles:
Если нам нужно отфильтровать результат по расширению файла:
Источник
Видео
[Windows Server 2012 basics] Урок 15 — Файловый сервер
Диспетчер ресурсов файлового сервера в Windows Server 2019 (File Server Resource Manager)
Просмотр открытых файлов в Windows Server (2008, 2012 и 2016)
NET FILE — просмотр открытых сетевых файлов
#22. Настройка файлового сервера на Windows Server 2019.
Операция не может быть завершена, так как файл или папка открыта в другой программе
Настраиваем систему архивации Windows Server
Как посмотреть все файлы во всех папках и подпапках в Windows | Поиск файлов | Вложенные
Как восстановить данные Windows Server, настроить архивацию данных и создать резервную копию 💽🖥️🗄️
Установка, настройка DFS. gpupdate, общие папки [Windows Server 2012] #8
Содержание
- Как определить кто открыл файлы в сетевой папке и сбросить сессии пользователя в Windows Server
- 1 способ. Получаем список открытых файлов с помощью оснастки «Управление компьютером».
- 2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.
- Определяем кто открыл сетевой файл.
- Закрываем заблокированный сетевой файл.
- Кто открыл файл windows server
- Вопрос
- Все ответы
- Как определить с какого компьютера в сети открыт файл на Windows Server 2008 R2?
- Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell
- Начнем.
- А теперь очень интересный скрипт.
- Рекомендации
- Получаем отчеты по сетевым папкам с помощью PowerShell
- Получаем все сетевые папки
- Получаем размер сетевой папки
- Получаем файлы по владельцу
- Получаем файлы по дате создания
Как определить кто открыл файлы в сетевой папке и сбросить сессии пользователя в Windows Server
На общедоступном сетевом ресурсе могут возникать ошибки доступа к файлам. Причиной этому является некорректно завершенная сессия пользователя, ошибки в работе ПО или просто кто-то открыл файл и не закрывает его. В такой ситуации файл оказывается заблокированным и не доступен для работы другим пользователям.
Решить проблему доступа к файлу можно путем закрытия сеансов использующих этот файл. В этой статье я расскажу как определить кто открыл файл в сетевой папке и как закрыть это подключение.
Рассмотрим два способа:
1 способ. Получаем список открытых файлов с помощью оснастки «Управление компьютером».
Для получения списка открытых файлов на файловом сервере воспользуемся оснасткой консоли «Управление компьютером». Для запуска оснастки нажимаем сочетание клавиш «Win + R» и набираем название оснастки «compmgmt.msc».
В иерархии оснастки переходим /Управление компьютером/Служебные программы/Общие папки/Открытые файлы.
В правой части оснастки появится список открытых файлов. Здесь можно увидеть имя пользователя открывшего файл, количество блокировок и режим доступа к файлу.
Закрываем файл. Чтобы закрыть сетевой файл открытый другим пользователем находим его в списке и в контекстном меню выбираем пункт «Закрыть открытый файл».
2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.
Утилита Openfiles дает нам более широкие возможности по поиску и закрытию заблокированных файлов.
C помощью openfiles можно просмотреть список открытых файлов на сервере удаленно. Для этого открываем командную и запускаем утилиту с параметрами.
По-умолчанию список файлов показан в формате таблицы, но есть параметры позволяющие изменить формат вывода:
Если необходимо увидеть информацию о количестве блокировок файлов (#Locks) и в каком режиме открыт файл (чтение или запись), то можно воспользоваться параметром /v.
Определяем кто открыл сетевой файл.
Чтобы найти пользователя, который открыл и заблокировал нужный нам файл запускаем Openfiles с командой find.
в команде find указан параметр /i, чтобы поиск был регистронезависимым.
После того когда мы узнали имя пользо
Закрываем заблокированный сетевой файл.
Закрыть открытый файл можно по id сессии таким способом:
Закрыть все сетевые подключения к файлам и папкам, которые открыл пользователь BadUser:
Закрыть все файлы и директории открытые в режиме чтение/запись:
Закрыть все подключения к директории с именем «c:myshare»:
Чтобы сбросить все сессии на удаленном сервере FileServer, которые открыл пользователь domainbaduser, независимо от id сессии:
Источник
Кто открыл файл windows server
Вопрос
в VBScript пытаюсь создать подключение к excel файлу. но эта книга лежит на сервере, иногда эта книга бывает занята другим пользователем. как я могу получить имя пользователя кто занял данную таблицу? уведомление во вложении. Имя пользователя как зарегистрирован в office
я могу читать данные о пользователях через aplication.userstatus. но для этого она должна быть открыта для редактирования нескольким пользователям. Как можно узнать кем занята книга для редактирования
Все ответы
во вложении изображении скриншоты что я хочу видеть
По данным вами ссылкам, результат един:
Да, я Жук, три пары лапок и фасеточные глаза :))
во вложении изображении скриншоты что я хочу видеть
The opinion expressed by me is not an official position of Microsoft
что будет если открыть файл и посмотреть пользователей которые открыли файл? я прочел что вы можете получить список пользюков, но только после того как откроете, а открыть вы не можете потому что файл занят, и именно на последнее я вам и дал предположительный ответ
и еще тут описан воркераунд по вашей теме. и еще одно похожее обсуждение
The opinion expressed by me is not an official position of Microsoft
$ и там можно как то узнать кто открыл файл для редактирования.Если верно, то подскажите где в этом файле я могу узнать имя пользователя
На вкладке Правка в списке Файл открыт следующими пользователями просмотрите имена пользователей.
Да, я Жук, три пары лапок и фасеточные глаза :))
На вкладке Правка в списке Файл открыт следующими пользователями просмотрите имена пользователей.
Да, я Жук, три пары лапок и фасеточные глаза :))
The opinion expressed by me is not an official position of Microsoft
Он открывает файл через устаревшие «Общие книги» размещённую в сети предприятия, но файл у него открывается в режиме «Только для чтения» и он не видит кто из пользователей открыл файл. Для решения этой задачи, он возможно пишет в VBA код выполняющий задачу:
«Если при попытке открыть файл, файл можно открыть только в режиме «Только для чтения», VBA выводит окно «Файл занят пользователем: Имярек», в противном случае открыть файл на редактирование.»
Допускаю, что ему необходим «UserName» или его аналог для VBA.
Да, я Жук, три пары лапок и фасеточные глаза :))
да мне нужно это. как можно реализовать?
Да, я Жук, три пары лапок и фасеточные глаза :))
Внимательно изучите статью «Общие книги», ссылку на которую я вам дал ранее. В ней пошагово в девять шагов, написано как создавать и работать с Общей книгой. Также внимательно изучите «Дополнительные сведения».
По вашему скриншоту, файл не является Общей книгой и открыт в монопольном режиме :
Дополните, что у вас имеется уже сейчас, и что может ваш макрос.
В дополнение, если бы вы внимательно прочитали статью и выполнили все рекомендации статьи, ссылку на которую вам дал ранее, то у вас был бы результат отображения всех пользователей открывших книгу на редактирование:
и не нужно было бы создавать макрос, так как Общая книга открывается для редактирования у всех открывающих Общую книгу:
При наличии Skype, вы также могли бы обмениваться мгновенными сообщениями с совместно работающими пользователями.
Да, я Жук, три пары лапок и фасеточные глаза :))
Источник
Как определить с какого компьютера в сети открыт файл на Windows Server 2008 R2?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Определение с какого компьютера в сети был открыт файл.
Привет всем, программисты кто-нибудь в курсе можно ли сделать следующее. Несколько компов в.
Определить, от какого пользователя открыт файл
День добрый! Есть задача определить кто открыл файл дальше взять его логин и отправить ввиде.
Групповая политика рабочего компьютера, присоединенного к домену Windows Server 2008 R2
Доброго вечера. Имеется Server 2008 и XP, которые находятся в одном домене. С помощью оснастки.
бесполезно, если несколько заходят под учеткой «Гость»
Добавлено через 27 минут
Интересно, но то, что у вас гостевой доступ, разве не подразумевает, что вам по барабану кто открвыает файл?
Отключение доступа к сайту из глобальной сети. Windows server 2008
Здравствуйте. Нужен был ресурс для локальной сети и был поднят веб-сервер. Однако, к этому ресурсу.
Windows Server 2008 R2 синхронизация времени с сервером ntpd в локальной сети
Не работает синхронизация времени в WS 2008 R2. Настройки прилетают от dhcp-сервера на linux, на.
Синхронизация данных по сети организации штатными средствами Windows Server 2008 R2
Доброго всем дня или ночи, у кого как) В организации стоит задача автоматизировать получение.
Как определить открыт ли файл?
Нужна помощь. Некий макрос открывает нужные экселевские файлы. Как сделать проверку ‘Не открыт ли.
Как определить, открыт ли файл?
Вопрос по теме. За ранее все спасибо!
Источник
Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell
Начнем.
Для начала включим к групповых политиках возможность аудита доступа к файлам и папкам.
Локальные политики безопасности->Конфигурация расширенной политики безопасности->Доступ к объектам
Включим «Аудит файловой системы» на успех и отказ.
После этого на необходимые нам папки необходимо настроить аудит.
Проходим в свойства папки общего доступа на файловом сервере, переходим в закладку «Безопасность», жмем «Дополнительно», переходим в закладку «Аудит», жмем «Изменить» и «Добавить». Выбираем пользователей для которых вести аудит. Рекомендую выбрать «Все», иначе бессмысленно. Уровень применения «Для этой папки и ее подпапок и файлов».
Выбираем действия над которыми мы хотим вести аудит. Я выбрал «Создание файлов/дозапись данных» Успех/Отказ, «Создание папок/дозапись данных» Успех/отказ, Удаление подпапок и файлов и просто удаление, так же на Успех/Отказ.
Жмем ОК. Ждем применения политик аудита на все файлы. После этого в журнале событий безопасности, будет появляться очень много событий доступа к файлам и папкам. Количество событий прямопропорционально зависит от количества работающих пользователей с общим ресурсом, и, конечно же, от активности использования.
Итак, данные мы уже имеем в логах, остается только их оттуда вытащить, и только те, которые нас интересуют, без лишней «воды». После этого акурратно построчно занесем наши данные в текстовый файл разделяя данные симовлами табуляции, чтобы в дальнейшем, к примеру, открыть их табличным редактором.
А теперь очень интересный скрипт.
Скрипт пишет лог об удаленных файлах.
Как оказалось при удалении файлов и удалении дескрипторов создается одно и тоже событие в логе, под При этом в теле сообщения могут быть разные значения «Операции доступа»: Запись данных (или добавление файла), DELETE и т.д.
Конечно же нас интересует операция DELETE. Но и это еще не все. Самое интересное, то что, при обычном переименовании файла создается 2 события с ID 4663, первое с Операцией доступа: DELETE, а второе с операцией: Запись данных (или добавление файла). Значит если просто отбирать 4663 то мы будем иметь очень много недостоверной информации: куда попадут файлы и удаленные и просто переименованные.
Однако мной было замечено, что при явном удалении файла создается еще одно событие с ID 4660, в котором, если внимательно изучить тело сообщения, содержится имя пользователя и еще много всякой служебной информации, но нет имени файла. Зато есть код дескриптора.
Однако предшествующим данному событию было событие с ID 4663. Где как раз таки и указывается и имя файла, и имя пользователя и время, и операция как не странно там DELETE. И самое главное там имеется номер дескриптора, который соответствует номеру дескриптора из события выше (4660, помните? которое создается при явном удалении файла). Значит теперь, чтобы точно знать какие файлы удалены, необходимо просто найти все события с ID 4660, а так же предшествующие каждому этому событию, событие с кодом 4663, в котором будет содержаться номер нужного дескриптора.
Эти 2 события генерируются одновременно при удалении файла, но записываются последовательно, сначала 4663, потом 4660. При этом их порядковые номера различаются на один. У 4660 порядковый номер на единицу больше чем у 4663.
Именно по этому свойству и ищется нужное событие.
Т.е. не записываем информацию об удаленных временных файлах (.*tmp), файлах блокировок документов MS Office (.*lock), и временных файлах MS Office (.*
Для лога удаленных файлов я использую схему: один файл на один месяц с именем содержащим номер месяца и год). Т.к. удаленных файлов в разы меньше чем файлов к которым был доступ.
В итоге вместо бесконечного «рытья» логов в поисках правды, можно открыть лог-файл любым табличным редактором и просмотреть нужные нам данные по пользователю или файлу.
Рекомендации
Вам придется самим определить время в течении которого вы будете искать нужные события. Чем больше период, тем дольше ищет. Все зависит от производительности сервера. Если слабенький — то начните с 10 минут. Посмотрите, как быстро отработает. Если дольше 10 минут, то либо увеличьте еще, вдруг поможет, либо наоборот уменьшите период до 5 минут.
Источник
Получаем отчеты по сетевым папкам с помощью PowerShell
Получаем все сетевые папки
Начнем с того, что определим, что же расшарено. Задача проста: просто осуществляем запрос класса Win32_Share, чтобы использовать Windows Management Instrumentation (WMI). Вам даже не нужно логиниться на файловом сервере. Вы можете запустить эту команду откуда угодно.
Вместо chi-fp01 укажем имя интересующего нас компьютера
Запустив эту команду Вы получите все сетевые папки, включая принтеры (если таковые имеются). Но так как мы говорим о файловых шарах, то давайте ограничим запрос. Все экземпляры Win32_Share имеют свойство Type, как показано в таблице 1.
Добавим фильтр в первоначальную команду:
Тем самым мы выводим только нужную информацию.
Но если вы ищите также и скрытые папки – те, которые заканчиваются знаком доллара ($) – фильтр придется слегка переписать:
В WMI знак процента (%) используется вместо знака подстановки (wildcard). Вывести все папки, кроме тех, которые скрыты чуть сложнее.
Получаем размер сетевой папки
Довольно часто необходима информация о том, сколько места занимают файловые шары. Используем Get-ChildItem, или его сокращение dir, и передадим результаты в Measure-Object:
В итоге вы получите информацию об общем числе объектов, размер в байтах, наименьшие и наибольшее размерах файлов. В предыдущей команде, применил фильтр. В PowerShell 3.0 то же самое можно сделать проще, однако та команда, которую я использовал, работает как v2.0, так и 3.0. Ее лучше всего запускать локально. Код в примере 1 комбинирует эту команду с нашей техникой WMI, чтобы получить отчет о размере высокоуровневых папок.
Пример 1: Отчет о размерах высокоуровневых сетевых папок
Вы можете форматировать или обрабатывать $results как вашей душе будет угодно. Нужна удобоваримая таблица? Просто используйте следующую команду:
Тем самым можно сделать полный отчет по использованию всех папок на файловом сервере не составляет труда. Сэкономьте время, воспользуетесь примером 2.
Пример 2: Отчет об использовании файловых шар
И снова я слегка отформатирую таблицу.
Получаем файлы по владельцу
Двигаемся дальше – найдем владельцев файлов. Если вы используете квоты, отчеты уже наверняка получаете. В противном случае, все, что вам нужно – это извлечь ACL файла, который включает в себя владельца, и агрегировать результаты. Лучше всего добавить владельца файла в качестве кастомного свойства
Мы можем группировать по свойству нового владельца и затем обрабатывать новый объект.
Пара усилий и вы можете применить тот же подход к файловой шаре, как указано в коде примера 3.
Пример 3: Группируем файловые шары по владельцу
Я также должен указать на то, что могут проблемы: с файлами, имя которых более 260 символов или содержит необычные символы, особенно если вы пытаетесь запустить Get-ACL. В PowerShell 3.0 этот командлет имеет параметр -LiteralPath, что помогает решить вышеуказанные проблемы.
Опять выведем читаемую таблицу.
Получаем файлы по дате создания
Последняя техника создания отчетов, которую я хочу продемонстрировать – это создание отчета с последними созданными файлами. Фактически, мы создаем коллекцию объектов, которую можем использовать несколькими способами. Возможно вы захотите использовать объекты или удалить или переместить файлы, или можете захотите построить отчет, который можно отправить руководству. Всегда создавайте команды PowerShell так, чтобы потом их можно использовать.
Определить возраст файл не так просто. В PowerShell файловый объект (объект типа файл) имеет несколько свойств, которые вы возможно захотите использовать. Например, команда:
дает вывод, представленный на скриншоте ниже.
Лично я считаю, что лучше использовать LastWriteTime, который обозначает, когда к файлу в последний раз обращались. Мне встречались ситуации, когда LastAccessTime обновлялся через сторонние программы, например, антивирус, что само по себе уже не означает правды. И LastAccessTime был деактивировал еще со времени Windows Vista, хотя вы можете его включить. Вам также нужно быть осторожным, потому что эти значения могут меняться в зависимости от того, копируете ли вы или перемещаете файлы между дисками (between volumes). Но вы можете решить это сами. Используя этот файл как пример, мы может заставить PowerShell сказать нам, насколько стар файл. См. пример 4.
Пример 4. Определяем возраст файлов
Свойство Age является объектом TimeSpan, и свойство Days является просто свойством TotalDays этого объекта. Но так как мы можем этом сделать для одного файла, мы можем сделать и для других Давайте взглянем на мою общую папку и найдем все файлы, которые не менялись за последние 400 дней.
Я пойду дальше и включу еще и владельца файла. На скриншоте ниже показаны результаты от запуска этого код в удаленной сессии на моем файловом сервере.
Я могу сохранить эти результаты в переменную и использовать их в любое время. Так как у меня есть полное имя файла, передать в другую команду, например, Remove-Item, не составит труда.
Одной из моих любимых техник является определение того, сколько файлов было изменено за год.
Как вы можете видеть на скриншоте, все выглядит причесано. Нужны детали? Можно проанализировать свойство Group, которое представляет собой коллекцию файлов.
Полезно знать, сколько файлов не изменялось за 30, 90 или 180 дней. К сожалению, простого способа использовать Group-Object для этого не существует, поэтому мне необходимо придется «пойти иным путем»; смотрите пример 5.
Пример 5: Определяем период изменения файлов
На рисунке ниже показан результат, когда я запустил этот код для папки с моими скриптами, которая, как я знаю, имеет плотное распределение по возрасту (decent age distribution). Мой код не включает в себя актуальные файлы, но это было бы слишком сложно изменить мой пример.
За основу поста использована первая часть статьи File Server Management with Windows PowerShell.
Кстати, о том, как найти файлы с помощью PowerShell и WMI Джеффри Хикс пишет в своем блоге (часть 1 и 2).
Источник
- Remove From My Forums
-
Вопрос
-
Добрый день
Интересует вопрос по оснастке просмотра открытых файлов по SMB. В Windows 2008R2 была оснастка «Управление открытыми файлами», но в 2012R2 ее нигде не могу найти.Конечно есть команда в powershell Get-SmbOpenFile, но хотелось сразу не только получать список открытых файлов пользователями, но и закрывать их.
Ответы
-
ее можно найти как подраздел shared folders в computer management или добавить в mmс руками shared folders
-
Помечено в качестве ответа
15 мая 2014 г. 7:27
-
Помечено в качестве ответа
Для просмотра в Powershell открытых файлов через SMB (открытых по сети) мы можем использовать командлет Get-SmbOpenFile. Командлет доступен с версии Windows Server 2012. Эта команда выведет папку, сессии и идентификаторы подключения:
Get-SmbOpenFile
Если мы захотим посмотреть детальную информацию по подключению нужно сделать следующее:
Get-SmbOpenFile -FileId 257698038505 | fl *
Или аналогично для сессий:
Get-SmbOpenFile -SessionId 257698037765 | fl *
Как фильтровать через Powershell файлы открытые по сети
Мы можем получить данные только по определенному свойству. Т.е. это могут быть файлы открытые определенным пользователем, компьютером, с каким-то расширением и т.д. Для того что бы увидеть все свойства объекта нужно сделать следующее:
Get-SmbOpenFile | Get-Member
Все что выделено — это свойство, которое мы можем вывести или отфильтровать по нему. Например я хочу вывести все компьютеры с которых выполнено подключение:
Get-SmbOpenFile | fl -Property ClientComputerName
Меня могут не интересовать все компьютеры, а только файлы открытые с определенного адреса:
Get-SmbOpenFile -ClientComputerName "*.3.1"
Таким образом я вывел все сессии, где свойство ClientComputerName заканчивается на 3.1.
Аналогично мы можем найти всех пользователей:
Get-SmbOpenFile | fl -Property ClientUserName
Если нам нужно найти, например, конкретный файл или расширение, то мы можем воспользоваться свойством Path или ShareRelativePath:
Get-SmbOpenFile | Where-Object -Property Path -Like "*txt"
Таким образом я нашел все сессии, где открытый файл заканчивается на txt.
Как закрывать сессии открытых файлов в Powershell через Close-SmbOpenFile
Для закрытия сессий есть другой командлет. Мы можем закрыть существующую сессию так:
Close-SmbOpenFile -SessionId 257698037797
Среди других ключей, которые мы можем указывать как идентификатор для закрытия могут быть:
- FileId
- SessionId
- ClientComputerName
- ClientUserName
- ScopeName
Частым сценарием может быть закрытие сессии где открыт определенный файл. Я бы это сделал так:
$opened_file = "*.txt*"
Get-SmbOpenFile | Where-Object ShareRelativePath -Like $opened_file | Close-SmbOpenFile
Т.е. в случае выше я закрыл все сессии, где открыт файл содержащий .txt
Выполнение Get-SmbOpenFile на другом сервере
Этот командлет поддерживает удаленное выполнение через сессию CIM. Для того что бы это сделать нужно написать следующее:
$cimsess = New-CimSession -ComputerName 192.168.3.100 -Credential (Get-Credential)
Get-SmbOpenFile -CimSession $cimsess
Ключ -Credential необходим, если мы используем не привилегированную учетную запись и хотим исполнить команду под другой учеткой.
Мы можем использовать и командлеты PSRemoting — это команды двух типов:
- New-PSSession и Enter-PSSession — для подключения к удаленному компьютеру и работы на нем
- Invoke-Command — выполнение команды на удаленном компьютере
Если вы работаете в домене и являетесь администратором сервера, к которому пытаетесь подключиться, то у вас должны сработать команды:
New-PSSession -ComputerName AD -Credential (Get-Credential) | Enter-PSSession
Get-SmbOpenFile
#Или
Invoke-Command -ComputerName AD1 -Credential (Get-Credential) -ScriptBlock {Get-SmbOpenFile}
Если у вас будут какие-то сложности, то стоит прочитать эту статью.
Get-SmbOpenFile для Windows Server 2008
На Windows Server 2008 этого командлета нет, но у нас есть другие способы для просмотра сессий и их закрытия. Так мы увидим все открытые файлы и папки:
Openfiles /Query /fo csv | more
Есть аналогичные команды для просмотра файлов и установленных сессий:
net file
net session
Можно посмотреть сессии на другом сервере. В моем случае я смотрю на сервере AD1:
Openfiles /Query /s AD1 /fo csv
Для закрытия файлов мы можем использовать:
net file /close 13
Либо через утилиту Openfiles:
Openfiles /Disconnect /s AD1 /ID 24
Если нам нужно отфильтровать результат по расширению файла:
net file | ? {$_ -like "*Новый документ*"}
…
Теги:
#powershell