2009-03-27 4 views
2

명명 된 파이프를 사용하여 Windows 서비스에 CGI 프로세스를 연결하려고합니다. 내 개발 컴퓨터의 다른 서버를 사용하여 코드가 제대로 실행되지만 CGI 프로세스에서 CreateFile()을 호출 할 때 IIS에 보안 문제가 있습니다.IIS에서 Windows Named-Pipe ACL

Windows 서비스는 명명 된 파이프 서버이므로 CGI 프로세스가 해당 명명 된 파이프에 클라이언트로 연결하려고합니다.

InitializeAcl() 
    AddAccessAllowedAce() 
    SetSecurityDescriptorDacl() 

하지만 난 정말 개념을 이해 해달라고 :

내가 호출하여 플래그 SECURITY_WORLD_SID_AUTHORITY과 글로벌 보안 설명을 생성하는 코드를 발굴했다. 파이프 서버 CreateNamedPipe()가 SECURITY_ATTRIBUTES 구조에서이 ACL로 호출되어야한다고 가정하고 있지만 명명 된 파이프 클라이언트는 어떻게됩니까?

다른 전역 보안 설명자를 만들고이를 사용하여 CreateFile()을 호출합니까?

내가 단지를 CreateFile에 null을 전달 마십시오 내가

SecurityAttributes.bInheritHandle = TRUE; 

와 함께 상속 수행()를 호출?

+0

CGI 프로세스가 어떤 계정으로 실행되고 있는지 알면 도움이됩니다. – Murray

+0

글쎄, 나는 이것을 바꿀 예정이므로 이것을 버렸다. 현재 그것은 관리자 권한을 가진 사용자 계정이지만 결국 IUSER가됩니다. –

답변

1

파이프가 서버에 의해 생성되므로 서버 만 ACL을 지정해야하므로 클라이언트는 ACL에 NULL을 사용합니다.

상속은 하나의 프로세스에서 명명 된 파이프가 만들어지고 프로세스가 생성 된 프로세스가 핸들에 직접 액세스 할 수있는 새 프로세스를 만드는 경우에만 적용됩니다 (핸들을 다시 열지 않고 명령 줄과 같은 다른 방법으로 값을 지정하십시오.)

sysinternals의 프로세스 탐색기를 사용하여 프로세스에서 명명 된 파이프를 열고 ACL을 볼 수 있습니다.

+0

"명명 된 파이프보기"는 어떻게합니까? 또한 ACL을 어떻게 보입니까? – codea

+0

"명명 된 파이프"는 특수 파일 시스템의 파일 일뿐입니다. 그들은 파일 형식의 핸들을 가지고 있습니다. 프로세스 탐색기는 기본적으로 프로세스의 모든 핸들을 표시합니다. – MSalters