2012-09-11 4 views
3

여기 누군가가 나를 도울 수 있기를 바랍니다. 나는이 문제에 대해 약 3 시간 동안 인터넷 검색을 해봤지만 도움이되지 않는다. (아니, stackoverflow.com/questions/1539506에 대한 답변이 도움이되지 못했습니다.)Windows 액세스가 가능한 iis 액세스 네트워크 공유

PHP가 설치된 IIS 7이 있습니다. 테스트 웹 사이트의 인증 모드를 "Windows 인증"으로 설정했습니다. 모든 것이 잘 작동합니다 (PHP에서 "REMOTE_USER"를 받음).

"scandir()"및 "is_file()"및 일부 다른 기능을 사용하여 네트워크 공유에 액세스해야하지만 "액세스가 거부되었습니다"또는 "디렉토리를 열지 못했습니다 : 해당 없음과 같은 오류 메시지 만 표시됩니다. 파일 또는 디렉토리 ". 내가 인증을 "익명"으로 설정하고, 모든 것이 잘 작동 나의 현재 테스트 사용자에게 "사용자 ID"를 설정하면하지만 난 "Windows 인증"

을 사용해야합니다 :

권한

올바른 설정 또한 가상 디렉터리로 네트워크 공유를 설정하려고 시도했지만 PHP는이 디렉터리를 발견하지 못했습니다 (phpinfo()는 "가상 디렉터리 지원"이 비활성화되어 있지만이 방법을 찾지 못했습니다)

추신 : 아파치 서버와 동일한 PHP 설정을 시도해 보았습니다. ("auth_sspi"모듈 및 "reqire valid-user"지시문 사용). 하지만 IIS에서이 작업을해야합니다.

+0

이제 내 솔루션은 네트워크 공유에 액세스 할 수있는 도메인 사용자의 실제 경로에 대한 로그온 사용자를 설정하는 것입니다. 제 경우에는 완벽하게 작동합니다. – Robert

답변

1

저는 오늘 아침에 작업 한 간단한 파일 구성 앱에서이 문제에 직면했습니다.

나는 보안 전문가의 관점에서 이것을 보지 않았지만 나는 직감이 이상적이지 않습니다. 내 앱은 비공개이므로 너무 걱정하지 않아도됩니다. 내가 아는 한이 문제는 IIS AppPool 사용자가 네트워크 공유를 마운트/권한 부여해야한다는 것입니다. 나는 심지어 발견

my_exec('net use \\\\$MachineName\$ShareName /user:$User $Pass'); 

: 다음이를 호출하고 공유에 액세스 할 수 있었다

<?php 

function my_exec($cmd, $input = '') 
{ 
    $desc = array(
     0 => array('pipe', 'r'), 
     1 => array('pipe', 'w'), 
     2 => array('pipe', 'w') 
    ); 

    $proc = proc_open($cmd, $desc, $pipes); 
    fwrite($pipes[0], $input); 

    $stdout = stream_get_contents($pipes[1]); 
    $stderr = stream_get_contents($pipes[2]); 

    fclose($pipes[0]); 
    fclose($pipes[1]); 
    fclose($pipes[2]); 

    $rtn = proc_close($proc); 

    return array('stdout' => $stdout, 'stderr' => $stderr, 'return' => $rtn); 
} 

?> 

:

내가 시스템을 실행하기 위해이 예제를 발견은 PHP System Call에 대한 매뉴얼 페이지에서 호출 작은 따옴표를 사용하면 앞의 \를 두 번 이스케이프 처리해야했습니다. 변수를 사용하고 따옴표를 두 번 변경하면 변수를 올바르게 조정하기 위해 조정해야 할 것입니다.

제가 조금 궁금해서이게 어떻게 효과가 있는지 알려주세요.

+0

귀하의 솔루션을 테스트하지 않았지만 IIS AppPool 사용자와 다른 사용자로 네트워크 공유에 액세스해야 할 가능성이 높습니다. Thatswhy 나는 당신의 대답을 받아 들인 것으로 표시했다;) – Robert

+0

고마워, 고마워. 느린 응답, 스택 slacking. :) –

관련 문제