네트워크 공유에서 파일이 열려있는 컴퓨터를 확인하는 방법은 무엇입니까?


21

환경:

Windows XP SP3, Windows 2003 서버

문제:

우리는 동일한 로그온 이름을 가진 수십 개의 키오스크 머신을 가지고 있으며, 공유기에서 가끔 그리고 간단히 파일을 작성합니다. 속도는 여러 잠금 장치이며 1 분에 릴리스됩니다.

최근에 우리는 클라이언트 중 하나가 파일을 독점적으로 잠그고 파일을 공개하지 않는 것을 경험했습니다. 

이러한 상황이 발생하면 파일을 닫을 수 있지만 몇 분 이상 경과하면 허용되지 않는 중단입니다.

릴리스되지 않은 잠금 문제는 지난 달에 여러 번 발생했습니다. 잠금을 담당하는 키오스크 장치를 찾고 있었을 때이를 신속하게 감지했습니다.

서버에서 얻을 수있는 정보에 차이가있는 것 같습니다.

우리는 다양한 도구에서 볼 수 있습니다 :
-어떤 파일이 열려 있고 잠겨 있습니다. (다양한 방법)
-특정 파일이 열려 있거나 잠겨있는 로그온
- 다양한 방법 -특정 컴퓨터는 일반적으로 파일이 열려 있습니다. (공유 폴더, 세션 mmc)

우리가 볼 수없는 것은 특정 컴퓨터에 특정 파일이 열려 있고 잠겨 있다는 것입니다.

누구든지 이것을 얻는 방법을 알고 있습니까?

감사 -


1
당신이 요구하는 것은 아니지만 대안은 각 시스템마다 별도의 계정을 만드는 것입니다.
Bryan

답변:


10

이 작은 프리웨어 유틸리티 ( ShareWatch )를 확인하십시오 . 찾고있는 것을 할 것이라고 생각합니다.

나열된 기능 중 하나 : "열린 파일과 함께 각 공유에 연결된 사용자 및 컴퓨터를 표시합니다."

대체 텍스트


1
이것에 감사드립니다-나는 Sharewatch를 시도했다. 내 상황에서 동일한 로그인 이름을 가진 12 개 이상의 클라이언트가 열려있는 파일과 워크 스테이션을 동일한 목록으로 결합합니다. 어느 워크 스테이션이 열려 있는지 알 수 없습니다. 또한 등록 정보를 선택하면 워크 스테이션에 파일 이름이 아닌 x 파일이 열려 있다고보고됩니다. 파일의 속성을 선택하면 비슷한 정보가 제공됩니다.
RobW

7

명령 행 (CMD)을 입력하고

네트워크 공유의 openfiles / query ip 를 입력하십시오.

그리고 사용자 이름과 비밀번호가 필요할 수 있습니다.

여기 에서 openfiles에 대한 자세한 정보를 얻을 수 있습니다 .


감사. Openfiles는 서버 콘솔의 net 세션과 거의 동일한 출력을 제공합니다. 파일을 연 컴퓨터 이름은 제공하지 않습니다. 파일-> 사용자 연결이 아닌 파일-> 컴퓨터 연결을 찾고 있습니다.
RobW February

5

귀하가 요청한 사항을 제공하는 것이 아니라 문제를 해결하는 데 필요한 것을 제공하는 데있어 Sky100의 게시물을 올바르게 참조하기를 원한다고 생각합니다. 필요한 데이터를 제공하기 때문에 "openfile / query / v"(verbose) 명령을 통해 잠긴 ID 번호를 참조해야합니다. 주어진 목록에서 파일 이름을 검색하면 데이터에 어떤 항목에 읽기 및 쓰기가 가능한지 표시되고 그와 함께 특정 ID 번호가 제공됩니다. 아니요. 파일이 잠겨있는 특정 시스템을 찾지 못할 수도 있지만 제공된 도구를 사용하여 파일에서 해당 사용자의 연결을 끊을 수 있습니다. 다음은 내 문제를 단순화하는 단계별 단계입니다.

1) 관리자 권한이있는 파일 서버에서 시작> 실행> CMD [ENTER]를 수행하십시오.

2) CD 데스크탑 [ENTER] (곧 이유를 볼 수 있습니다.)

3) openfiles / query / v> file.txt [ENTER] (이것은 서버에서 열린 모든 파일 목록이있는 파일을 데스크탑에 만듭니다.)

4) file.txt를 열고 파일 이름과 읽기 + 쓰기 권한이 모두있는 행을 검색하십시오.

5) 해당 줄의 ID 번호를 기록하고 명령 콘솔로 돌아갑니다.

6) openfiles / disconnect / ID [ID 번호 입력] [ENTER]

파일 서버에 대한 관리 권한이있는 한 파일에서 해당 시스템의 연결을 끊고 시스템이 자동화되었다고 가정하면 필요에 따라 작업을 계속 진행할 수 있습니다.

참조 : openfiles / query /? openfiles / disconnect /?

시스템에 맞는 스크립트 또는 프로그래밍 된 응용 프로그램이 필요한 경우 언제든지 의견을 말하십시오. 기술과 함께 매우 저렴한 가격으로 연락처 정보를 제공하겠습니다. 내 응용 프로그램에서 지원합니다.


하아! 내 문제는 파일을 연 컴퓨터를 찾는 것이 었습니다. 그렇게하는 방법에 대한 아이디어가 있습니까? 파일을 식별하고 닫는 것은 간단하며이 결과를 처리하는 많은 방법이 있습니다. 답장을 보내 주셔서 감사합니다. 귀하의 상업적 제안으로 이른 아침 문제가 발생했습니다. ;-)
RobW

사과하지만, openfiles 프로세스가 해결책이 아니라는 것을 알지 못했습니다. 앞에서 설명한 것처럼 파일을 닫지 않고 잠긴 설정을 제거하기 때문에 시스템을 자세히 살펴볼 필요가있는 것으로 보입니다. 사실, 나는 회사를 위해 응용 프로그램을 구축했으며 그러한 합병증을 피하기 위해 조금씩 실행되도록 자동화 할 수 있습니다. 그래도 요점 옆에있는 것 같아요. 직접적인 질문에 대답하려면 : 해당 시스템에 해당 파일에 대한 액세스 권한을 감사 할 수있는 방법이 있어야합니다. 자세한 내용은 다음 게시물을 참조하십시오.
토마스

실제로 돌아가서 게시물을 다시 읽으면 ... "이 문제가 발생하면 파일을 닫을 수 있지만 몇 분 이상이 지나면 허용되지 않는 중단입니다." 솔루션이 작동하지 않는 이유는 파일을 닫고 있기 때문입니다. 이전에 제공된 내 및 부분적으로 Sky100의 솔루션은 파일을 닫지 않지만 읽기 전용에 대한 액세스 권한을 변경합니다. 다시 말하지만, openfiles가 원하는 솔루션을 어떻게 얻지 못하는지 혼란 스럽습니다. 비 솔루션으로 작성하기 전에 촬영하십시오. 프로그래머가 마음에 들지 않으면 몇 분마다 실행할 배치 파일을 만드십시오.
토마스

상황에 대한 나의 이해가 철저하지 않은 경우에 시간을 낭비하지 않도록 아래의 질문에 대한 해결책을 남겨두고 있습니다.
Thomas

음 사과하지만, 내 질문이 당신에 의해 해결되고 있다고 생각하지 않습니다. 파일을 열어 둔 컴퓨터를 확인하는 데 도움이 필요했습니다 . 나는 컴퓨터 이름을 결정하는데 정말로 관심이 있습니다. 나머지는 흥미롭지 만 내가 따르는 유한 한 것을 말하지 않습니다.
RobW

2

해결하려는 문제가 해결하려는 문제 (예 : 사용자가 아닌 특정 클라이언트 컴퓨터를 잠긴 파일에 매핑)입니까, 아니면 해결해야하는 잠금 문제가 있습니까?

후자가 도움이된다면 내가 볼 두 가지가 있습니다.

  • 클라이언트에 설치된 AV를 확인하십시오. 여러 클라이언트 측 AV로 인해 공유에서 비정상적인 잠금 동작이 심각한 것으로 나타났습니다.

  • EnableOpLocks 레지스트리 값을 0으로 설정하여 기회 잠금 을 해제하십시오 .

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0 또는 1 기본값 : 1 (사용)

이렇게하면 성능이 다소 떨어지지 만 아무 것도 깨지 않아야합니다.

나는 누군가가 실제로 당신의 진술 된 질문에 대답하는 것을보고 싶습니다. 흥미로운 문제입니다.


헬빅 감사합니다! 기회 적 잠금을 비활성화하는 것은 흥미로운 접근법입니다. 내가 생각하는 서버?
RobW

그러나 서버에 있습니다. 이렇게하면 클라이언트가 기회 적 잠금을 요청하지 않으므로 파일을 로컬로 캐시 할 수 있습니다.
Helvick

기회 적 잠금을 비활성화하면 성능이 저하 될 수 있습니다. 우리는 이것을 테스트 베드에서 볼 필요가 있습니다.
RobW February

그것은 분명히 이것의 위험입니다-나는 당신이 찾은 것에 관심이 있습니다.
Helvick

2

RobW의 문제를 해결하고 대체 솔루션을 제공하려는 시도에서 그의 질문에 대답하지 못했습니다.

찾고있는 솔루션이 해당 시스템에서 감사 정책을 설정 한 다음 특정 사용자의 액세스를 감사하도록 파일을 설정하는 것입니다. 이를 수행하는 단계는 네트워크 설정에 따라 다를 수 있으므로 감사 할 다른 시스템을 설정하는 방법에 대한 Microsoft의 기술 링크를 참조합니다.

http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx

설정 한 후에는 사용자 계정을 감사 자로 연결하여 모니터링하려는 특정 파일을 설정해야합니다.

나중에 보안 이벤트 로그를 확인하기 만하면 각 시스템이 모두 동일한 사용자 이름을 사용하므로 각 시스템이 나열되지만 현재 파일에 대한 읽기 및 쓰기 액세스 권한이있는 시스템을 정렬하고 찾기가 어렵지 않습니다.

며칠마다 지우도록 보안 로그를 설정하는 것이 유용 할 수 있습니다.

그래도 문제가 해결되지 않으면 사용자 이름이 아닌 파일에 액세스하는 각 호스트 이름별로 시스템을 설정해야합니다. 나는 이것이 Microsoft Management Console을 통해 가능하다고 생각합니다.

다시 말하지만, 프로그래밍이 필요하다면 작은 프로그램을 위해 많은 돈을들이는 것에 관심이없는 사업가는 아닙니다. 나는 개인조차도 부끄러워하지 않을 가격으로 양질의 프로그래밍을 제공합니다. 이것이 문제를 해결하는 데 도움이되기를 바랍니다.


고마워 초기 문제 직후 해당 디렉토리에 대한 감사를 설정했습니다. 해당 디렉토리에는 ~ 150 개의 클라이언트 (키오스크뿐만 아니라)가 활성화되어 있습니다. 문제가 간헐적으로 발생함에 따라 신호 대 잡음비가 커서 특정 컴퓨터를 파일 이벤트에 연결하는 명확한 방법을 보지 못했습니다. 다시 한번 살펴 보겠습니다. 우리는 이미이 문제에 대해 몇 차례의 디자인 회의를 가졌습니다. 로그온 계정을 포함하여 여러 가지 주제가 표에 나와 있습니다. 나는 아직도 어떤 컴퓨터가 파일을 열어두고 있는지 알고 싶습니다 :-)
RobW

1

가능한 경우 다른 사용자를 다른 키오스크에 할당합니다. 다른 로그를 분석하는 데 도움이 될 수 있습니다 ...

이것이 불가능한 경우 : 가능한 해결책의 개요 : 해결책은 키오스크에서 적절한 필터 (문제의 파일에 대한)를 사용하여 sysinternals processmonitor와 같은 도구를 실행하는 것입니다 (숨길 수 있는지 알 수 없음). 캡처 한 데이터를 파일로 저장하는 데 사용할 수있는 명령 줄 옵션이 있습니다.

다양한 키오스크에서 수집하여 Excel로 가져 와서 닫히지 않은 것을 찾으십시오.


0

netstat 명령을 사용하여이를 결정하는 것은 어떻습니까?

netstat -an | find ":445"

연결된 컴퓨터의 IP 주소가 제공됩니다.

IP 주소가 아닌 호스트 이름을 원하면

netstat -a | find "microsoft-ds"

그러나 특히 사용중인 파일 서버 나 도메인 컨트롤러에서 실행하는 데 시간이 오래 걸리므로 호스트 검색이 많이 수행됩니다.

또한 결과에는 인바운드, 아웃 바운드 및 유휴 청취 포트가 표시됩니다.

인바운드 연결은 왼쪽 열에 : 445를, 아웃 바운드는 오른쪽 열에이를 표시합니다.

-n 옵션을 사용하지 않으면 'LISTENING'이라는 상태의 결과와 로컬 IP 주소 (예 : 0.0.0.0 또는 127.0.0.1) 만 표시하거나 컴퓨터 소유의 호스트 이름 만 표시하는 행은 무시해도됩니다.

예를 들면 다음과 같습니다.

Z:\>netstat -an | find ":445"
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    127.0.0.1:445          127.0.0.1:41764        ESTABLISHED
  TCP    127.0.0.1:445          127.0.0.1:41767        ESTABLISHED
  TCP    127.0.0.1:41764        127.0.0.1:445          ESTABLISHED
  TCP    127.0.0.1:41767        127.0.0.1:445          ESTABLISHED
  TCP    192.168.16.17:445      192.168.16.87:1098     ESTABLISHED
  TCP    192.168.16.17:18055    192.168.16.24:445      ESTABLISHED
  TCP    192.168.16.17:20678    192.168.16.24:445      ESTABLISHED
  UDP    0.0.0.0:445            *:*

여기에 연결된 유일한 호스트는 192.168.16.87입니다. 192.168.16.24에 대한 연결이 아웃 바운드입니다. 다른 모든 연결은 로컬 연결입니다.


흠, 질문을 다시 읽으면 컴퓨터가 어떤 파일을 열 었는지 알려주지 않으므로 문제를 해결하지 못합니다.
Bryan

문제 없어. 나는 그 아이디어에 감사한다.
RobW

0

사용 된 공유 및 잠긴 파일을 확인하는 그래픽 도구가 창 안에 있다는 것을 기억합니다.

"공유 폴더"라는 이름으로 "컴퓨터 관리"(~ 프랑스어에서 번역 ...) 아래의 "시스템 도구"에 있어야합니다.


0

이 방법은 매우 오래되었지만 ADSI는 WinNT : // 인터페이스를 제공하여 LANMANSERVER 서비스에 액세스하고 "공유 폴더"mmc 스냅인에 이미 노출 된 속성을 쿼리 할 수 ​​있습니다. 현재 호스트 사용자를 열린 파일 에 연결하는 방법을 연구 중 입니다.


-1

그것이 나와 동일한 서브넷의 Linux 시스템에 액세스 할 수 있다면 ... 공유 포트에서 파일을 열어두고있는 상자에 tcpdump를 수행합니다.

유닉스가 없다면, 여전히 tcpdump를 사용할 수 있지만 설치해야합니다.

리눅스에서 ... 나는 다음과 같이 할 것이다 : tcpdump -ieth0 -s0 -X 호스트 이름 포트 1234 | grep -i "nameoffile"

나는 대부분의 페이로드가 바이너리라는 것을 알고 있지만 파일에 액세스하기 위해 인증을 협상하기위한 초기 헤더가 일반 텍스트로되어 있다는 것은 좋은 돈입니다.

그러면 해당 상자에 연결하는 모든 파 엔드 호스트와 패킷 데이터 내에서 파일 이름이 발견되는 위치가 표시됩니다 (암호화 또는 이진이 아닌 경우).

행운을 빕니다! 그러나 내 경험으로는 다음을 사용해야합니다.

1) 공유 파일은 나쁜 생각입니다! 특히 연결이 끊어 지거나 연결 속도가 느린 경우 파일을 잠글 수있는 원격 시스템이 있습니다.

2) 공유 파일에 액세스하면 클라이언트간에 경쟁 조건이 발생합니다. 진드기 시간 낭비.

3) 반드시 공유 파일을 사용해야하는 경우 ... 각 원격 사이트에 대해 다른 사용자 이름을 작성하여 올바르게 디버그 할 수 있도록하십시오.

최상의 시나리오 ... 파일을 제거하고 SQL로 병합하거나 클라이언트가 파일 또는 데이터에 액세스 할 수있는 웹 서비스를 작성하십시오.

++ 토드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.