2011-10-13 2 views
0

서버상의 PHP 스크립트가 디렉토리를 생성 할 수 없다면 PHP는 apache/nobody로 실행되기 때문에 대개 이럴까요? 그러면 서버가 잘못 구성되었다고 말할 수 있습니까? (또는 표준 설정을 사용하는 것)chmod 777 -이 문제는 서버 문제입니까?

php가 사용자로서 실행되고 있다면 더 좋을 것입니다. 그렇다면이 문제 (777 필요)가 여전히 발생합니까? 나는 그렇게 생각하지 않지만 내가 물어볼 줄 알았다. ...

답변

2

이렇게하면 서버가 잘못 구성되었다고 말할 수 있습니까?

그것이 어떻게되는지입니다. 아파치에 의해 실행되는 PHP 스크립트는 사용자 www-data (우분투에서)로 실행됩니다. www-data에는 전체 서버에 대한 쓰기 권한이 거의 없습니다. 그리고 그것이 그것이 있어야하는 방법입니다. 약간 불안한 PHP 스크립트 (예 : code injection에 감염 될 가능성이 있음)를 작성하고 루트로 실행하면 악의적 인 방문자가 전체 하드 드라이브를 지울 수 있습니다.

보안을 위해 PHP가 사용자로 실행 중이면 더 좋을까요?

누구를 의미합니까?? 뿌리 인 경우에, 위에보십시오. 루트 권한을 가진 사용자 인 경우 위를 참조하십시오.

이 문제 (777 필요)가 계속 발생합니까?

문제는 외국 디렉토리에 대한 전체 읽기, 쓰기 및 실행 권한이 필요한 코드를 사용하고 있다는 것입니다.

스크립트에 의해서만 사용되는 디렉토리 인 경우 www-data이 소유해야합니다. 문제 해결됨.

민감한 시스템 영역에 액세스해야하는 PHP 스크립트를 사용하는 경우이를 수행하는 방법을 다시 생각해 볼 수 있습니다. PHP 스크립트가 실행해야하는 많은 작업은 스크립트에 의해 예약되어 나중에 cron 작업에 의해 실행될 수 있습니다.

마지막으로 중요한 것은 당신이 당신이 절대적으로 일 경우이어야한다는 것입니다. 원하는 모든 사용자로서 php를 실행할 수 있습니다. 그냥 모듈 mpm_itk_module를 설치하고 <VirtualHost> 태그 안에

AssignUserId user group 

를 추가합니다.

하지만 이전에 말씀 드렸듯이 잘못된 스크립트와 잘못된 권한으로 Very Bad Things (TM)가 발생할 수 있습니다.

+0

문제는 PHP가 소유하고있는 FTP를 통해 사용자가 디렉토리를 삭제할 수 없다는 것입니다. 그 주위에 어떤 방법이 있습니까? – Wesley

+0

물론. 두 사용자를 그룹에 추가하고 그룹에 쓰기 권한을 부여하십시오. – Dennis

2

IMO 절대 777 디렉토리가 없어야한다. 사용자가없는 웹 서버에서는별로 중요하지 않지만 어쨌든 반드시 피해야합니다.

PHP on debian은 apache (www-data)와 동일한 사용자 및 그룹으로 실행됩니다. 따라서 사용자가 원하는 것을 수행 할 수 있도록 파일 액세스 제어를 구성하기 만하면됩니다. 당신은 777

다른 배포판 비슷한 구성이 필요하지 않은,하지만 당신은 항상 당신이 원하는 결과를 얻을 수 있도록 apache2.conf의php.ini의 파일을 편집 할 수 있습니다.