사용자에게 하나 이상의 폴더에 대한 SFTP 액세스 권한이 부여되는 공유 호스팅 환경을 설정하려고 합니다. 다음 시나리오를 고려해보세요.
/var/www/
도메인을 나타내는 여러 디렉터리를 보유합니다. 사용자는 ACL을 기반으로 디렉터리의 파일을 추가, 수정 또는 삭제할 수 있으므로 및 john
에 대한 전체 액세스 권한은 부여되지만 에는 액세스할 수 없습니다 . 물론 동시에 웹 서버는 모든 디렉터리 내의 파일을 읽을 수 있어야 합니다./var/www/domain1.com
/var/www/domain2.org
/var/www/domain3.de
내가 완전히 이해하지 못하는 것은 그런 방식으로 모든 것을 보호하는 방법입니다.
- 모든 사용자는 감금되어
/var/www/
볼 수 있는 도메인(하위 폴더)만 볼 수 있습니다. - Apache 사용자는
www-data
모든 폴더에 대해 읽기 권한만 갖습니다. - PHP는 사용자 업로드 폴더 또는 로그 폴더와 같은 일부 폴더에 대한 쓰기 권한을 가지고 있습니다.
/var/www/domain/
- SFTP를 통해 업로드된 새 파일은 자동으로 올바른 권한을 얻고 사용자는 다른 공유 호스팅 사용자가 액세스하지 않고도 PHP에서 쓸 수 있는 폴더를 지정할 수 있습니다.
PHP에서는 각 도메인이 별도의 항목이고 pool.d
사용자를 자유롭게 구성할 수 있는 PHP-FPM 인스턴스를 의미합니다.
지금까지 내 아이디어는 그룹을 추가 sftp
하고 sshd
그룹에 속한 사용자를 감옥에 가두도록 sftp
구성 하고 /var/www/
비밀번호 인증을 허용한 다음 을 추가하는 것이었습니다 ForceCommand internal-sftp
. 그런 다음 /var/www/
올바른 사용자가 올바른 디렉터리에 액세스할 수 있도록 내부 폴더에 대해 기본 ACL을 반복적으로 설정합니다 . 하지만 폴더에 대한 소유 사용자 및 그룹으로 무엇을 설정해야 합니까? umask를 조정해야 합니까? 각 PHP-FPM 풀 인스턴스에 적합한 사용자와 그룹은 무엇입니까?