Среда:
Windows XP sp3, сервер Windows 2003
Проблема:
У нас есть несколько десятков киоск-машин, каждая из которых имеет одно и то же имя для входа, которые время от времени и на короткое время сохраняют файл в общем ресурсе. Скорость составляет несколько замков и выпускает за минуту.
Недавно мы столкнулись с тем, что один из клиентов блокировал файл исключительно, а затем не выпускал файл.
Мы можем закрыть файл, когда это произойдет, но пройдет несколько минут или дольше, и это неприемлемое отключение.
Проблема с невыпущенной блокировкой возникала несколько раз за последний месяц. Я искал, какое устройство киоска отвечает за блокировку, и чтобы быстро обнаружить, когда это произойдет.
Кажется, есть пробел в информации, которую мы можем получить с сервера:
Мы можем видеть из различных инструментов:
-Какие файлы открыты и заблокированы. (много способов)
-Каким входом в систему указан или заблокирован конкретный файл. (много способов)
- на конкретном компьютере обычно открыт файл. (Общие папки, сессии mmc)
То, что мы не можем видеть, - то, что у определенного компьютера есть определенный файл, открытый и заблокированный.
Кто-нибудь знает способ добраться до этого?
Благодарность -
обкрадывать
Ответы:
Посмотрите на эту маленькую бесплатную утилиту ( ShareWatch ), я думаю, она сделает то, что вы ищете.
Одна из перечисленных функций: «Показывает пользователей и компьютеры, которые подключены к каждому общему ресурсу, а также какие файлы открыты».
источник
Введите командную строку (CMD),
затем введите: openfiles / ip запроса сетевого ресурса
И имя пользователя и пароль могут потребоваться.
Вы можете получить больше информации об openfiles здесь .
источник
Я полагаю, что вы захотите сослаться на пост Sky100, поскольку он прав, не в том, чтобы предоставить вам то, что вы просили, а в том, что вам нужно для решения вашей проблемы. Вам нужно будет сослаться на заблокированный идентификационный номер с помощью команды "openfile / query / v" (verbose), поскольку она предоставит вам необходимые данные. Ищите имя файла в указанном списке, данные покажут, для какого элемента разрешено чтение и запись, и вместе с ним предоставит конкретный идентификационный номер. Нет, вы не сможете найти, для какой конкретной системы заблокирован файл, но с помощью предоставленных инструментов вы можете отключить этого пользователя от файла. Вот шаг за шагом, чтобы упростить мои разговоры.
1) На файловом сервере с правами администратора выполните Пуск> Выполнить> CMD [ENTER]
2) Рабочий стол CD [ENTER] (скоро вы увидите, почему.)
3) openfiles / query / v> file.txt [ENTER] (это создаст файл на рабочем столе со списком всех открытых файлов на сервере.)
4) Откройте файл file.txt и найдите строку, содержащую как ваше имя файла, так и права на чтение + запись.
5) Запишите идентификационный номер в этой строке и вернитесь к командной консоли.
6) openfiles / отсоединить / ID [поставить номер ID здесь] [ENTER]
Пока у вас есть права администратора на файловом сервере, он будет отключать эту систему от файла, и, если ваша система автоматизирована, это позволит продолжать работу по мере необходимости.
Ссылки: openfiles / query /? открыть файлы / отключить /?
Если вам нужен скрипт или запрограммированное приложение, предназначенное для вашей системы, пожалуйста, не стесняйтесь комментировать, и я предоставлю контактную информацию, очень низкую цену вместе с технологией. поддержка по моему заявлению.
источник
Является ли проблема, которую вы пытаетесь решить, той, которую вы указали (например, сопоставление определенного клиентского компьютера (не пользователя) с заблокированным файлом), или это проблема блокировки, которую вам необходимо решить?
Если последний поможет, то я бы посмотрел на две вещи:
Проверьте AV, установленный на ваших клиентах. Я видел, что множественные AV на клиентской стороне вызывают серьезную неприятную аномальную блокировку поведения на общих ресурсах.
Попробуйте отключить оппортунистическую блокировку , установив для параметра реестра EnableOpLocks значение 0.
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Параметры EnableOplocks REG_DWORD 0 или 1 По умолчанию: 1 (включено)
Это несколько снизит производительность, но ничего не должно сломать.
Хотелось бы, чтобы кто-то действительно ответил на ваш заданный вопрос - это интересная проблема.
источник
В моей попытке решить проблему RobW и предложить альтернативное решение, я не смог ответить на его вопрос.
Я считаю, что решение, которое вы ищете, заключается в настройке политик аудита в этой системе, а затем в настройке этого файла для аудита любого доступа от этого конкретного пользователя. Шаги для выполнения этого могут различаться в зависимости от настроек вашей сети, поэтому я собираюсь отослать вас к технической ссылке Microsoft по настройке различных систем для аудита.
http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx
После того, как вы это настроите, убедитесь, что выполнили настройку конкретного файла, который вы хотите отслеживать, подключив учетную запись пользователя в качестве аудитора, вы должны быть готовы к работе.
Просто проверьте ваши журналы событий безопасности в будущем, и, хотя в нем будут перечислены все системы (так как все они используют одно и то же имя пользователя), не составит труда разобраться и определить, какая система в настоящее время имеет доступ для чтения и записи к файлу.
Может быть полезно настроить журнал безопасности на очистку каждые несколько дней.
Если это не сработает, скорее всего, вам нужно будет настроить систему для каждого имени хоста, обращающегося к файлу, а не имени пользователя. Я считаю, что это стало возможным благодаря консоли управления Microsoft.
Опять же, если вам нужно программирование, я не бизнесмен, заинтересованный в том, чтобы брать кучу ваших денег на какую-то крошечную программу. Я предоставляю качественное программирование по цене, от которой даже человек не будет уклоняться. Я надеюсь, что это поможет вам в решении вашей проблемы.
источник
Я бы также назначил разных пользователей для разных киосков, если это возможно - это может помочь вам в анализе других журналов ...
Если это невозможно: план возможного решения: решение может состоять в том, чтобы запустить на киосках такой инструмент, как sysinternals processmonitor с соответствующим фильтром (для рассматриваемого файла) (не знаю, сможете ли вы его скрыть). Есть некоторые параметры командной строки, которые вы можете использовать, чтобы сохранить захваченные данные в файл.
Соберите их из различных киосков, импортируйте их, например, в Excel и найдите тот, который не был закрыт ...
источник
Как насчет использования команды netstat для определения этого?
Это должно дать вам IP-адреса подключенных машин.
Если вы хотите, чтобы имена хостов, а не IP-адреса, используйте
однако это займет больше времени, особенно на загруженных файловых серверах или контроллерах домена, так как для этого потребуется выполнить много операций поиска на хосте.
Также имейте в виду, что в результатах будут показаны входящие, исходящие и незанятые порты прослушивания.
Входящие соединения покажут: 445 в левом столбце, исходящие - в правом столбце.
Вы можете спокойно игнорировать любые результаты, в которых указано «LISTENING», а также любые строки, которые показывают только локальные IP-адреса (например, 0.0.0.0 или 127.0.0.1) или имя компьютера, если вы не используете опцию -n.
Например:
Единственный подключенный хост здесь - 192.168.16.87. Соединения с 192.168.16.24 являются исходящими. Все остальные соединения являются локальными.
источник
Я помню, что в окнах был графический инструмент для проверки используемых общих ресурсов и заблокированных файлов.
Это должно быть в «системных инструментах» в разделе «Управление компьютером» (перевод с французского ...), под названием «общие папки».
источник
Я знаю, что это очень старая версия, но ADSI предоставляет интерфейс WinNT: //, который позволяет получить доступ к службе LANMANSERVER и запросить свойства, уже представленные в оснастке mmc «Общие папки». В настоящее время я изучаю способ связать хост и пользователя с открытым файлом.
источник
Если бы это был я, и у меня был доступ к машине linux в той же подсети ... Я бы сделал tcpdump на рассматриваемом порте общего доступа для коробки, на которой они держат открытый файл.
Если у вас нет unix, вы все равно можете использовать tcpdump, но вы должны установить его.
из Linux ... я бы сделал что-то вроде этого: tcpdump -ieth0 -s0 -X имя хоста порт 1234 | grep -i "nameoffile"
Я знаю, что большая часть полезных данных является бинарной ... Однако я бы поспорил, что первоначальный заголовок для согласования аутентификации для доступа к файлу будет открытым текстом.
Это покажет вам каждый хост на дальнем конце, который подключается к этому блоку и где имя файла находится в данных пакета (если не зашифровано или в двоичном формате).
Удачи! Но из моего опыта следует использовать следующее:
1) Общие файлы - плохая идея! Особенно с удаленными системами, которые могут оставить файл заблокированным, если они разрывают соединение или имеют медленные соединения.
2) Доступ к общему файлу вызовет состояние гонки между клиентами. Тратить драгоценное время.
3) Если вы ДОЛЖНЫ использовать общий файл ... Создайте разные имена пользователей для каждого удаленного сайта, чтобы вы могли правильно отлаживать.
Лучший сценарий ... избавиться от файла и объединиться с SQL или создать веб-сервис, который позволяет клиентам получить доступ к файлу или данным.
++ Todd
источник