2010-05-06 3 views
11

나는이 문제에 대해 다뤘다. 나는 아파치와 PHP를 실행 중이다. 우리는 많은 가상 호스트를 가지고 있지만 잠재적 인 악의적 인 사용자가 자신의 웹 공간을 사용하여 다른 사용자의 파일을 (간단한 PHP 스크립트를 통해) 심지어는 시스템 파일까지도 탐색 할 수 있음을 발견했습니다. 이는 PHP 권한으로 인해 발생할 수 있습니다. php.ini에서 open_basedir var을 설정하는 방법은 없습니다. 단일 호스트 시스템에서는 매우 간단하지만 가상 호스트의 경우 각 호스트마다 basebir이 있습니다.PHP - 각 가상 호스트마다 다른 open_basedir

각 사용자/호스트별로 설정할 수 있습니까? 아파치가 요청 된 php 파일의 PHP 권한을 유전되게하는 방법이 있습니까?

E.G. /home/X_USER/index.php는 소유자가 X_USER인데, 아파치가 index.php 파일을 읽을 때 경로와 소유자를 확인하기 만하면 간단히이 경로에 대한 시스템 기반 PHP 기반 변수를 찾고 있습니다. 사전에

감사 Lopoc

답변

17

그것은 php_admin_value 아파치 지시어를 사용하여 디렉토리 기반으로 open_basedir을 설정할 수 있습니다. 귀하의 코멘트를 다시

<Directory /docroot> 
    php_admin_value open_basedir /docroot 
</Directory> 

: 다음 manual에서

예, 외부 명령이 open_basedir의 영향을받지 않습니다 - 권리 자주라는 이름의 PHP가에서 실행되는 사용자 계정을 (수행 ls /이를 호출 할 때 www 또는 유사). 내가 아는 한, open_basedir을 외부 명령으로 확장 할 수는 없습니다.

그런 경우에는 일반적인 Apache/PHP 설정에서 찾고있는 보호 기능을 사용할 수 없다고 생각합니다. 어쩌면 가까이에 오는 유일한 것은 running Apache in a chroot jail입니다. 나는이 일을 직접 해보지 않았으므로 나는 그것에 대해 아무 말도 할 수 없다. 당신은 파고 들어야 할 것이고 그것에 대해 구체적으로 질문을해야 할 것이다.

+0

확인 그래,하지만 단순한 에코 'LS /' 여전히 심지어 작동에 액세스 할 수있는 "/"나 PHP로 끝나야합니다, 보안되지 않습니다 이 지시어 – Lopoc

+0

@Lopoc 내 업데이트를 참조하십시오. –

1

어지는 것이 좋습니다. 이제 도커가 더 효과적입니다.

및 "/ docroot에"와 open_basedir을

당신은 /는 docroot1