공유 호스팅: 사용자가 다른 사람의 파일을 볼 수는 없지만 여전히 Apache/PHP에서 해당 파일을 쓸 수 있도록 하는 방법

공유 호스팅: 사용자가 다른 사람의 파일을 볼 수는 없지만 여전히 Apache/PHP에서 해당 파일을 쓸 수 있도록 하는 방법

내가 읽고Linux 웹 서버에서 내 웹 사이트 파일/폴더에는 어떤 권한이 있어야 합니까?여기에 연결된 질문이 있습니다. 의 말을하자:

  • /var/www/bobweb/다음이 소유하고 있습니다.bob:bob

  • /var/www/eveweb/다음이 소유하고 있습니다.eve:eve

각 사이트에는 다음으로 연결되는 Apache VirtualHost가 있습니다.bobweb.com그리고eveweb.com.

각 웹사이트는 Apache에서 쓸 수 있어야 하므로(두 웹사이트 모두에 이미지 업로더가 있음) 다음 내용을 자주 읽습니다.

"그냥 chgrp -R www-data /var/www/bobweb/이브를 위한 생각으로 하세요. 그게 전부입니다!"

이는 다음을 제공합니다:

drwxrwx---  3 bob    www-data 4096 Jan  9 17:45 bobweb
drwxrwx---  5 eve    www-data 4096 Feb 26  2019 eveweb

이는 실제로 Bob이 쉘/SSH에서 Eve의 파일을 방문하는 것을 방지하며 그 반대의 경우도 마찬가지입니다.

하지만www-dataEve는 읽기(또는 수정)를 위해 PHP 스크립트(실행)를 작성할 수 있는 것 같습니다 /var/www/bobweb/wp-config.php(따라서 Bob의 DB 비밀번호를 훔칩니다!).

질문: Bob이 Eve의 파일을 읽지 못하게 하거나 그 반대로 사용자+그룹 소유권과 권한을 수정하는 방법은 무엇입니까? 하지만 여전히 Apache+PHP가 이러한 웹 사이트에 데이터를 쓸 수 있도록 허용합니까?

(일반적인 공유 호스팅 상황)

답변1

파일 권한만으로는 이 작업을 완전히 수행할 수 없습니다. 감옥을 만들기 위해 실행 중인 응용 프로그램을 살펴봐야 합니다. PHP의 경우 "open_basedir" 가상 호스트별로.

또한 FTP 서버에서 비슷한 것을 원할 것입니다(어떤 서버를 사용하고 있는지 알려주지 않았지만 대부분/대부분 적절한 지시어가 있음).

물론 CGI를 허용하면 전체 문제 공간이 변경됩니다.

관련 정보