업데이트 된 요약
/ var / www 디렉토리는 다음을 소유합니다 root:root
. 즉, 아무도 사용할 수 없으며 완전히 쓸모가 없습니다. 우리 모두는 실제로 작동하는 웹 서버를 원하므로 아무도 "루트"로 로그인하지 않아야하므로이 문제를 해결해야합니다.
두 엔터티 만 액세스해야합니다.
PHP / Perl / Ruby / Python 은 폴더와 파일을 많이 생성하므로 폴더와 파일에 액세스해야합니다 (예 :)
/uploads/
. 이 스크립팅 언어는 nginx 또는 아파치 (또는 PHP 용 FastCGI와 같은 것)에서 실행되어야합니다.개발자
그들은 어떻게 접근합니까? 나는 누군가 어딘가에서 전에 이것을 한 것을 알고 있습니다. 그러나 수십억 개의 웹 사이트가 있다면이 주제에 대한 더 많은 정보가있을 것이라고 생각할 것입니다.
777은 소유자 / 그룹 / 기타에 대한 전체 읽기 / 쓰기 / 실행 권한이라는 것을 알고 있습니다. 따라서 임의의 사용자에게 모든 권한을 부여하므로 이것이 올바르게 필요 하지 않은 것 같습니다 .
어떤 권한을 사용할 필요가있다 /var/www
그래서 :
- git 또는 svn과 같은 소스 제어
- "웹 사이트"와 같은 그룹의 사용자 ( 또는 "www-data"에 추가됨 )
- 아파치 나 라이트와 같은 서버
- 그리고 PHP / Perl / Ruby
거기에서 파일과 디렉토리를 읽고 만들고 실행할 수 있습니까?
내가 맞다면 Ruby와 PHP 스크립트는 직접 "실행"되지 않고 인터프리터에게 전달된다. 따라서 파일에 대한 실행 권한이 필요하지 않습니다 /var/www
...? 따라서 것 올바른 권한을 것 같다 chmod -R 1660
할 것이다
- 이 네 가지 엔티티가 공유 할 수있는 모든 파일
- 실수로 실행 불가능한 모든 파일
- 디렉토리에서 다른 사람을 완전히 차단
- 이후의 모든 파일에 대해 권한 모드를 "고정"으로 설정
이 올바른지?
업데이트 1 : 파일과 디렉토리에 다른 권한이 필요할 수 있음을 깨달았습니다. 위의 파일에 대해 이야기 했으므로 디렉토리 권한이 무엇인지 확실하지 않습니다.
업데이트 2 :/var/www
위의 네 가지 엔티티 중 하나가 항상 여러 수준의 폴더와 하위 폴더를 추가 (및 때로는 제거)함에 따라 변경 사항 의 폴더 구조가 크게 향상되었습니다. 또한 다른 3 개의 엔터티에 대한 읽기 / 쓰기 액세스 권한이 필요한 파일을 만들고 제거합니다. 따라서 권한은 파일과 디렉토리 모두에 대해 위의 네 가지 작업을 수행해야합니다. 그들 중 누구도 실행 권한이 필요하지 않기 때문에 (위의 ruby / php에 대한 질문 참조) rw-rw-r--
이 4 개의 엔티티가 신뢰할 수있는 직원 (# 2 참조)과 다른 모든 사용자 가 실행하기 때문에 권한이 필요하고 완전히 안전 하다고 가정 합니다. 시스템에는 읽기 권한 만 있습니다.
업데이트 3 : 개인 개발 컴퓨터 및 개인 회사 서버용입니다. 공유 호스트와 같은 임의의 "웹 고객"이 없습니다.
업데이트 4 : slicehost 의이 기사 는 www 폴더에 대한 권한을 설정하는 데 필요한 것을 설명하는 데 가장 좋습니다. 그러나 PHP 또는 svn / git을 사용하는 사용자 또는 그룹 apache / nginx와 그 변경 방법을 잘 모르겠습니다.
업데이트 5 : 마침내이 모든 것을 작동시키는 방법을 찾았습니다 (아래 답변). 그러나 이것이 올바른 올바른 방법인지는 모르겠습니다. 그러므로 나는 현상금을 시작했습니다. www 디렉토리를 보호하고 관리하는 가장 좋은 방법을 가진 사람이 승리합니다.